【问题标题】:Joda Time Week Ending Date乔达时间周结束日期
【发布时间】: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% 正确。乔达时代不能这样做吗?这很令人失望。感谢您的链接!

标签: java jodatime


【解决方案1】:

感谢gaganbm的评论,我做到了:

DateTime weekStart = getUSFirstDayOfWeek(now);
DateTime weekEnd = now.withDayOfWeek(DateTimeConstants.SATURDAY).plusDays( 0 );

public static DateTime getUSFirstDayOfWeek(DateTime dateTime) {
    return dateTime.withDayOfWeek(DateTimeConstants.MONDAY).minusDays(1);
}

似乎产生了正确的结果!

【讨论】:

    猜你喜欢
    • 2015-11-28
    • 2014-05-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-08-04
    • 1970-01-01
    • 2023-03-09
    • 2010-11-19
    相关资源
    最近更新 更多