这是现在真正的日历:
March 2015
Su Mo Tu We Th Fr Sa
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
Run Code Online (Sandbox Code Playgroud)
我DAY_OF_WEEK是2015/3/24这样理解的:
public class TestCalendar {
public static void main(String[] argvs){
Calendar cal = Calendar.getInstance();
cal.setFirstDayOfWeek(Calendar.MONDAY);
cal.set(2015,Calendar.MARCH,24);
System.out.println(cal.get(Calendar.DAY_OF_WEEK));
}
}
Run Code Online (Sandbox Code Playgroud)
因为我必须cal.setFirstDayOfWeek得到MONDAY我期望的结果2,但是无论我设置为的哪一天first day of week(已经尝试过周日和其他人)。它一直向我显示相同的结果3。所以这似乎firstDayOfWeek不会影响结果。
我做错了什么吗?
编辑
我只是想并感谢下面的答案,这setFirstDayOfWeek不会影响get(Calendar.DAY_OF_WEEK)或get(Calendar.WEEK_OF_YEAR)
那么这个方法setFirstDayOfWeek()是为了什么而设计的呢?我的意思是我如何告诉程序我想要2015/3/29第 12 周的最后一天,而不是将其视为第 13 周的第一天?
LocalDate.of( 2015 , Month.MARCH , 24 ) // `LocalDate` object for 2015-03-24.\n .getDayOfWeek() // DayOfWeek.TUESDAY constant object\n .getValue() // 2\nRun Code Online (Sandbox Code Playgroud)\n\nCalendar是一个丑陋的混乱,它的兄弟类也是如此。幸运的是,这些旧的日期时间类现在已经被遗留下来,被 java.time 类取代。
如果您希望星期一作为一周的第一天,星期日作为最后一天,编号为 1-7,则使用java.time 类中默认使用的ISO 8601日历。
\n\nDayOfWeek这DayOfWeek枚举保存一周中每个 ISO 天的预定义对象。如果需要,您可以询问其编号,但通常最好传递此枚举的对象而不是单纯的整数。
LocalDate该类LocalDate表示仅日期值,没有时间和时区。
LocalDate ld = LocalDate.of( 2015 , Month.MARCH , 24 );\nDayOfWeek dow = ld.getDayOfWeek();\nint value = dow.getValue(); // 1-7 for Monday-Sunday. But often better to use the `DayOfWeek` object rather than a mere integer number.\nRun Code Online (Sandbox Code Playgroud)\n\n要使用星期一不是第一天的一周的其他定义,请参阅课程WeekFields。
java.time框架内置于 Java 8 及更高版本中。这些类取代了麻烦的旧遗留日期时间类,例如java.util.Date, Calendar, & SimpleDateFormat。
Joda -Time项目现在处于维护模式,建议迁移到java.time类。
\n\n要了解更多信息,请参阅Oracle 教程。并在 Stack Overflow 上搜索许多示例和解释。规格为JSR 310。
\n\n从哪里获取 java.time 类?
\n\nThreeTen -Extra项目通过附加类扩展了 java.time。该项目是 java.time 未来可能添加的内容的试验场。您可能会在这里找到一些有用的类,例如Interval、、、等等。YearWeekYearQuarter
| 归档时间: |
|
| 查看次数: |
3807 次 |
| 最近记录: |