我在使用 Java 日历时遇到一些问题。当我向日历添加几周时,它在某些情况下无法正常工作。例如。将 week_of_yer 设置为 3,然后添加 -3 周;)在大多数情况下效果很好,但在 2010 年、2016 年等情况下效果不佳。(今年是一年后的 53 周)。它看起来像 JDK 中的错误,我认为当周数为 52 时它们会更改年份:D 一些简单的代码:
Calendar calendar = new GregorianCalendar();
calendar.set(Calendar.YEAR, 2016);
calendar.set(Calendar.WEEK_OF_YEAR, 3);
calendar.add(Calendar.WEEK_OF_YEAR, -3);
System.out.println("rolled week: " + calendar.get(Calendar.WEEK_OF_YEAR) + " - " + calendar.get(Calendar.YEAR));
此代码的结果是:滚动周:53 - 2016 :D
在所有其他情况下应为 53 - 2015,它应按预期工作。
有人有类似的问题吗?
最佳答案
问题是您显示的是年份而不是年份。您不需要对日历进行算术来显示这一点。基本上,您显示的是 2016 年 1 月 1 日。其中的年份是 2016 年,但年份(即计算一年中的星期的年份)是2015年。
不幸的是,据我所知,Java 没有办法获取星期几。你最好使用 Joda Time ,它可以让您轻松完成这一切:
import org.joda.time.*;
public class Test {
public static void main(String[] args) throws Exception {
LocalDate date = new LocalDate(2016, 1, 1);
System.out.println(date);
System.out.println(date.getWeekOfWeekyear());
System.out.println(date.getWeekyear());
}
}
输出:
2016-01-01
53
2015
关于Java 日历错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13536509/