发布于2021-07-24 23:49 阅读(1113) 评论(0) 点赞(11) 收藏(2)
我们如何计算前一个星期天或前一个星期日,或者一般来说如何找出n周之前的星期日?问题是如果今天是星期日,那么它今天应该返回为星期日而不是上周。
寻找 Joda-Time 或 Java 8 时间解决方案。
编辑: 我试过了
DateTime sunday = now
.minusWeeks(1)
.withDayOfWeek(DateTimeConstants.SUNDAY)
.withTimeAtStartOfDay();
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黑洞网
任何形式的转载都请注明出处,如有侵权 一经发现 必将追究其法律责任
昵称:
评论内容:(最多支持255个字符)
---无人问津也好,技不如人也罢,你都要试着安静下来,去做自己该做的事,而不是让内心的烦躁、焦虑,坏掉你本来就不多的热情和定力
Copyright © 2018-2021 java黑洞网 All Rights Reserved 版权所有,并保留所有权利。京ICP备18063182号-2
投诉与举报,广告合作请联系vgs_info@163.com或QQ3083709327
免责声明:网站文章均由用户上传,仅供读者学习交流使用,禁止用做商业用途。若文章涉及色情,反动,侵权等违法信息,请向我们举报,一经核实我们会立即删除!