使用java日历类获取一周的开始和结束日期
我想获取给定日期的一周的最后一周和第一周。 例如,如果日期是 2011 年 10 月 12 日,那么我需要日期 2011 年 10 月 10 日(作为一周的开始日期)和 2011 年 10 月 16 日(作为一周的结束日期) 有谁知道如何使用日历类(java.util.Calendar)获取这两个日期 多谢!
I want to get the last and the first week of a week for a given date.
e.g if the date is 12th October 2011 then I need the dates 10th October 2011 (as the starting date of the week) and 16th october 2011 (as the end date of the week)
Does anyone know how to get these 2 dates using the calender class (java.util.Calendar)
thanks a lot!
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(5)
一些代码如何使用
Calendar
对象执行此操作。我还应该提到 joda 时间库,因为它可以帮助您了解许多日期/日历问题。
代码
Some code how to do it with the
Calendar
object. I should also mention joda time library as it can help you many ofDate/Calendar
problems.Code
该解决方案适用于任何区域设置(一周的第一天可以是星期日或星期一)。
例如,今天是 2014 年 1 月 29 日。对于以星期日为一周第一天的区域设置,您将得到:
对于以星期一为第一天的区域设置,日期将为:
This solution works for any locale (first day of week could be Sunday or Monday).
For example, today is Jan, 29 2014. For the locale with Sunday as a first day of week you will get:
For the locale with Monday as a first day the dates will be:
如果你想要所有日期那么
If you want all dates then
示例代码
这是将打印的
Here is the sample code
which will print
我发现接受的答案中的公式仅在某些情况下有效。例如,您的一周从星期六开始,今天是星期日。为了得到一周的第一天,我们向后走 1 天,但公式 cal.get(Calendar.DAY_OF_WEEK) - cal.getFirstDayOfWeek() 会给出答案 -6。解决方案是使用模数,因此可以说公式可以环绕。
I have found the formula in the accepted answer will only work in some cases. For example your week starts on Saturday and today is Sunday. To arrive at the first day of the week we walk back 1 day, but the formula
cal.get(Calendar.DAY_OF_WEEK) - cal.getFirstDayOfWeek()
will give the answer -6. The solution is to use a modulus so the formula wraps around so to speak.