【发布时间】:2012-09-21 14:09:03
【问题描述】:
我需要获取上周星期一和星期五的日期。为此,我得到本周星期一的日期并减去 7 天。这给了我上周星期一的日期。
要获得星期五的日期,我必须添加 4。这让我有点困惑,因为由于某种原因,一周的第一天是星期日,而不是英国的星期一。
无论如何,这就是我获取日期的方式。
// Get the dates for last MON & FRI
Calendar cal = Calendar.getInstance();
cal.setTime(date);
cal.set(Calendar.DAY_OF_WEEK, Calendar.MONDAY);
cal.add(Calendar.DAY_OF_WEEK, -7);
cal.set(Calendar.HOUR_OF_DAY,0);
cal.set(Calendar.MINUTE,0);
cal.set(Calendar.SECOND,0);
cal.set(Calendar.MILLISECOND,0);
// Get the date on Friday
cal.add(Calendar.DAY_OF_WEEK, 4);
cal.set(Calendar.HOUR_OF_DAY,23);
cal.set(Calendar.MINUTE,59);
cal.set(Calendar.SECOND,59);
cal.set(Calendar.MILLISECOND,0);
上述方法有效,但如果逻辑有任何问题,我很感兴趣。 IE。它适用于二月、闰年等吗?
欢迎提出更好的解决方案/方法。
谢谢
【问题讨论】:
-
由于星期是有规律的,我认为 2 月或闰年没有任何问题:如果今天是星期一,那么最后一个星期一就是 7 天前。
-
如果你昨天运行它,你期望得到什么结果?如果你今天运行它会怎样?昨天它会给 2012-09-17 星期一,今天是 2012-09-24。
-
我希望它返回上周周一和周五的日期。因此,如果我昨天(甚至今天)运行它,两次运行都应该给我第 17 和第 21 名。如果我明天运行它,那是新的一周,它应该给我 24 和 29 日。
-
你如何定义“上周”?最后七天?标准的周一至周日时段?本地化周,例如美国的周日至周六?今天的前一周还是包括今天的部分星期?
标签: java date datetime calendar