【发布时间】:2015-08-06 17:46:52
【问题描述】:
我正在尝试使用 Joda 时间获取一周的最后一天。
这是周日至周六执行此操作的正确方法(已准备好生产)吗:
DateTimeZone timeZone = DateTimeZone.forID( "America/New_York" );
DateTime now = new DateTime( timeZone );
DateTime weekStart = now.withDayOfWeek( DateTimeConstants.SATURDAY ).minusDays(6);
DateTime weekEnd = now.withDayOfWeek(DateTimeConstants.SATURDAY).plusDays( 0 );
Interval week = new Interval( weekStart, weekEnd );
//Dump to console…
String[] week_start = weekStart.toString().split("T");
String[] week_End = weekEnd.toString().split("T");
String[] now_date = now.toString().split("T");
System.out.println( "now: " + now_date[0] );
System.out.println( "weekStart: " + week_start[0]);
System.out.println( "weekEnd: " + week_End[0] );
System.out.println( "week: " + week );
输出:
now: 2015-08-06
weekStart: 2015-08-02
weekEnd: 2015-08-08
week: 2015-08-02T14:15:46.580-04:00/2015-08-08T14:15:46.580-04:00
【问题讨论】:
-
代码没问题,一周从星期一 (2015-08-03) 午夜开始,正好在一周后 (2015-08-10) 结束。你为什么希望它在星期六结束?我们谈论的是日历周,而不是工作周。
-
嗨,我希望开始日期是星期日,结束日期是星期六。
-
那么 DateTimeConstants.SUNDAY 是开始日,DateTimeConstants.SATURDAY 是结束日?
-
你不能覆盖 Joda 一周的开始和结束日期,如果这是你想要达到的目标stackoverflow.com/questions/13602096/…
-
这真的很有趣,所以他们没想到这会被用于商业目的?有些企业需要周日到周六,我的具体要求必须 100% 正确。乔达时代不能这样做吗?这很令人失望。感谢您的链接!