Java 问:在任何给定的一天,我想确定(比如说)上周五的日期。 示例:如果我今天运行程序(即 2012 年 9 月 5 日星期三),我应该得到“上周五是 2012 年 8 月 31 日”的结果。如果我在 2012 年 9 月 8 日星期六运行它,结果应该是 2012 年 9 月 7 日,依此类推(不过,这里的日期格式并不是严格的问题)
是否有任何可用的API,或者我是否需要编写一个根据当前日期回溯那么多天的程序,等等?
谢谢!
最佳答案
这个怎么样:
Calendar cal = Calendar.getInstance();
int day = cal.get(Calendar.DAY_OF_WEEK);
cal.add(Calendar.DAY_OF_MONTH, -((day + 1) % 7));
Date lastFriday = cal.getTime();
我们总是可以通过减去当前日期的 Calendar.DAY_OF_WEEK 值再加 1 来返回上一个星期五。例如,如果当前日期是星期一(值 = 2)并且我们减去 (2 + 1) 我们回到三天前的周五。如果我们在星期二做同样的事情,我们会返回 (3 + 1) 天 - 也到星期五。
如果当天是星期五或星期六,我们需要确保分别只返回 0 天或 1 天,因此我们只需取 (day + 1)
值的 mod 7。
关于java - 确定一周中特定一天的日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12283794/