我知道这里也有同样的问题,但我试过了提供的答案,它返回了一个我不明白的输出.我对答案感到困惑,我认为输出不正确.
I know there is the same question here, but I have tried the answer provided and it returned an output that I don't understand. I am confused by the answer and I don't think the output is correct.
我需要帮助,谢谢:)
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]
我应该提取输出的哪个位置来检索星期一的日期?
Where on the output should I extract to retrieve Monday's date?
LocalDate ld = LocalDate.of(2014, Month.JUNE, 12);
System.out.println(ld);
ld = ld.with(TemporalAdjusters.next(DayOfWeek.MONDAY));
System.out.println(ld);
哪些打印...
2014-06-12
2014-06-16
因为我的实际日期可能是星期一,所以您也可以使用...
Because it's possible that the date my actually be a Monday, you could also use...
ld = ld.with(TemporalAdjusters.nextOrSame(DayOfWeek.MONDAY));
您应该使用 ThreeTen Backport,它为您提供 Java 8 Date/的支持时间接口
You should be using the ThreeTen Backport, which gives you the support of the Java 8 Date/Time API
代替 System.out.println(date1); 使用 System.out.println(date1.getTime());
getTime 返回一个 Date 的实例,它表示 Calendar
getTime returns an instance of Date which represents the current state of the Calendar
这将输出 Mon Jul 14 00:00:00 EST 2014
System.out.println(date1) 等价于使用 System.out.println(date1.toString()),在本例中为转储一堆关于 Calendar 对象状态的有用信息,但不是真正的人类可读数据.
System.out.println(date1) is the equivlent of using System.out.println(date1.toString()), which, in this case, is dumping a bunch of useful info about the state of the Calendar object, but not really human readable data.
System.out.println(date1.getTime()) 将使用 Date 的 to toString 方法来显示日期值, 根据当前的本地设置格式化,这将提供更多有用的信息.
System.out.println(date1.getTime()) will use the Date's to toString method to display a date value, formatted based on the current local settings, which will provide more useful information.
更新
不要使用GregorianCalendar,而应该使用系统Calendar,例如...
Instead of using GregorianCalendar, you should use the system Calendar, for example...
Calendar date1 = Calendar.getInstance();
date1.set(2014, 06, 12);
此外,月份是 0 索引的,这意味着 Janurary 实际上是 0 而不是 1,因此在您的示例中,您指定了月份为 7 月,而不是 6 月.
Also, months are 0 indexed, meaning that Janurary is actually 0 not 1, so in your example, you've specified the month as July, not June.
所以,相反,使用...
So, instead, using...
Calendar date1 = Calendar.getInstance();
date1.set(2014, 05, 12);
while (date1.get(Calendar.DAY_OF_WEEK) != Calendar.MONDAY) {
date1.add(Calendar.DATE, 1);
}
System.out.println(date1.getTime());
哪个输出了...
Mon Jun 16 16:22:26 EST 2014
从今天开始是下周一...或多或少 ;)
Which is next Monday from today...more or less ;)
这篇关于在特定日期之后的下周一获得第一个?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持html5模板网!
解析 ISO 8601 字符串本地日期时间,就像在 UTC 中Parsing an ISO 8601 string local date-time as if in UTC(解析 ISO 8601 字符串本地日期时间,就像在 UTC 中一样)
如何将公历字符串转换为公历?How to convert Gregorian string to Gregorian Calendar?(如何将公历字符串转换为公历?)
Java:GregorianCalendar 的最大值和最小值是什么/在哪Java: What/where are the maximum and minimum values of a GregorianCalendar?(Java:GregorianCalendar 的最大值和最小值是什么/在哪里?)
1582 年 10 月 15 日之前日期的日历到日期转换.公历Calendar to Date conversion for dates before 15 Oct 1582. Gregorian to Julian calendar switch(1582 年 10 月 15 日之前日期的日历到日期转换
java日历setFirstDayOfWeek不起作用java Calendar setFirstDayOfWeek not working(java日历setFirstDayOfWeek不起作用)
Java:获取当前星期几的值Java: getting current Day of the Week value(Java:获取当前星期几的值)