【发布时间】:2014-06-12 06:09:10
【问题描述】:
我知道here 有同样的问题,但我已经尝试了提供的答案,它返回了一个我不明白的输出。我对答案感到困惑,我认为输出不正确。
我需要帮助,谢谢:)
GregorianCalendar date1 = new GregorianCalendar( 2014, 05, 12 ); //05 is june as month start from 0 -11
while( date1.get( Calendar.DAY_OF_WEEK ) != Calendar.MONDAY )
date1.add( Calendar.DATE, 1 );
System.out.println(date1);
这是输出:
java.util.GregorianCalendar[time=1405267200000,areFieldsSet=true,areAllFieldsSet=true,lenient=true,zone=sun.util.calendar.ZoneInfo[id="Asia/Singapore",offset=28800000,dstSavings=0,useDaylight=false,transitions=9,lastRule=null],firstDayOfWeek=1,minimalDaysInFirstWeek=1,ERA=1,YEAR=2014,MONTH=6,WEEK_OF_YEAR=29,WEEK_OF_MONTH=3,DAY_OF_MONTH=14,DAY_OF_YEAR=195,DAY_OF_WEEK=2,DAY_OF_WEEK_IN_MONTH=2,AM_PM=0,HOUR=0,HOUR_OF_DAY=0,MINUTE=0,SECOND=0,MILLISECOND=0,ZONE_OFFSET=28800000,DST_OFFSET=0]
我应该提取输出的哪个位置来检索星期一的日期?
【问题讨论】:
-
System.out.println(date1.getTime());
-
DAY_OF_WEEK=2- 输出看起来正确(虽然不适合人类)。 -
如果您能够使用 Java 8,我建议您使用
java.time类。否则,我建议您使用 Joda Time。请注意,当前您正尝试在系统时区中查找下周一(或今天 - 即使已经是周一,您的 while 循环也不会迭代一次)在系统时区中。这就是你想要的吗? -
Calendar月份被0索引,您指定的是 7 月而不是 6 月... -
@beNice 如果可以的话,我仍然会考虑使用 JodaTime