程序员最近都爱上了这个网站  程序员们快来瞅瞅吧!  it98k网:it98k.com

本站消息

站长简介/公众号

  出租广告位,需要合作请联系站长


+关注
已关注

分类  

暂无分类

标签  

暂无标签

日期归档  

暂无数据

如何使用 Java 日期时间 API 或 Joda 时间查找前一个星期日?

发布于2021-07-24 23:49     阅读(1113)     评论(0)     点赞(11)     收藏(2)


我们如何计算前一个星期天或前一个星期日,或者一般来说如何找出n之前的星期日问题是如果今天是星期日,那么它今天应该返回为星期日而不是上周。

寻找 Joda-Time 或 Java 8 时间解决方案。

编辑: 我试过了

DateTime sunday = now
    .minusWeeks(1)
    .withDayOfWeek(DateTimeConstants.SUNDAY)
    .wi‌​thTimeAtStartOfDay()‌​;
DateTime previousWeekSunday = now
    .minusWeeks(2)
    .withDayOfWeek(DateTimeConstants.SATURDAY)
    .‌​withTime(23, 59, 59, 999); 

但是如果当前是星期日,那么这个逻辑就会失败,因为它没有给出今天的日期。


解决方案


你基本上需要检查今天是否是星期天,如果不是,然后回顾前一个......(或者如果你需要前一个日期,则递归地将日期移回......)

使用 java 8,您将需要:


LocalDate date = LocalDate.now();
DayOfWeek todayAsDayOfWeek = date.getDayOfWeek();
LocalDate prevSun = todayAsDayOfWeek == DayOfWeek.SUNDAY ? date : date.with(TemporalAdjusters.previous(DayOfWeek.SUNDAY));
System.out.println(prevSun);

编辑:previousOrSame 方法将跳过实际星期几的检查

    LocalDate date = LocalDate.now();
    LocalDate prevSun = date.with(TemporalAdjusters.previous(DayOfWeek.SUNDAY));

    prevSun = date.with(TemporalAdjusters.previousOrSame(DayOfWeek.SUNDAY));
    System.out.println(prevSun);


所属网站分类: 技术文章 > 问答

作者:黑洞官方问答小能手

链接:http://www.javaheidong.com/blog/article/253092/1efd802f2e67f21739f2/

来源:java黑洞网

任何形式的转载都请注明出处,如有侵权 一经发现 必将追究其法律责任

11 0
收藏该文
已收藏

评论内容:(最多支持255个字符)