【发布时间】:2019-12-29 15:25:20
【问题描述】:
我正在存储一些以周数引用的数据。现在,我有两个按钮来请求数据。一个用于前一周,另一个用于下周。默认情况下会获取本周的数据
我刚刚完成了年底的例外处理,我了解到明年(2020 年)也有第 53 周.现在,每次第 53 周时它都会中断。(它只是跳过第 53 周)
显然,必须有更好的方法来做到这一点..
我只是不断添加异常,以下是我最终得到的代码。
我是菜鸟,所以请忍受丑陋的逻辑。
LocalDate wks, mon, tue, wed, thu, fri, sat, wke;
try {
week = Integer.parseInt(request.getParameter("week"));
year = Integer.parseInt(request.getParameter("year"));
} catch (NumberFormatException e) {
week = getWeek();
year = getCurrYear();
flag = 1;
}
LocalDate date = LocalDate.now()
.withYear(year) // year
.with(WeekFields.ISO.weekOfWeekBasedYear(), week) // week of year
.with(WeekFields.ISO.dayOfWeek(), 7);
wks = date.plusDays(-7);
if ((date + "").substring(0, 4).equals((wks + "").substring(0, 4))) {
} else if (flag == 1) {
year++;
}
date = LocalDate.now()
.withYear(year) // year
.with(WeekFields.ISO.weekOfWeekBasedYear(), week) // week of year
.with(WeekFields.ISO.dayOfWeek(), 7);
wks = date.plusDays(-7);
mon = wks.plusDays(1);
tue = wks.plusDays(2);
wed = wks.plusDays(3);
thu = wks.plusDays(4);
fri = wks.plusDays(5);
sat = wks.plusDays(6);
wke = date;
System.out.println(week + " " + year);
heading = "<div class='row'>"
+ "<form action=\"";
if (week == 1) {
heading += "javascript:setContent('/getData?week=52&year=" + (year - 1) + "')\" >";
} else {
heading += "javascript:setContent('getData?week=" + (week - 1) + "&year=" + (year) + "')\" >";
}
heading += "<button type='submit'>Previous</button></form><form action=\"";
if (week == 52) {
heading += "javascript:setContent('getData?week=1&year=" + (year + 1) + "')\" >";
} else {
heading += "javascript:setContent('getData?week=" + (week + 1) + "&year=" + (year) + "')\" >";
}
heading += "<button type='submit'Next</button></form>";
out.print(heading);
函数:getWeek()
public static int getWeek() {
java.util.Date date = new java.util.Date();
SimpleDateFormat ft = new SimpleDateFormat("w");
return (Integer.parseInt(ft.format(date)));
}
函数:getCurrYear() {
public static int getCurrYear() {
Date date = new Date();
return (date.getYear() + 1900);
}
我必须打印一周中的日期,这就是为什么周一到周六的变量。
我只想要一个像下面这样的函数
function int[] getWeekYear(){
return [prev week,prev week's year,current week,current year,next week,next week's year];
}
【问题讨论】:
标签: java week-number