java - 确定一周中特定一天的日期

标签 java date dayofweek

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/

相关文章:

java - 如何将 null 转换为 Throwable super((Throwable)null);

php - 如何将我的日期时间存储为数据库中的日期

javascript - 如何使用 NestJs @Body 解析 JSON 请求中的日期

date - 获取本周第一天和当前时间 JDK 8 之间的时间范围

android - 无论我放置什么时间,AlarmManager 都会显示

java - 用于登录/注册/检查 HttpSession 的 Web servlet 方法是否有效?

java - Maven 无法转换为 javax.servlet.Filter

java - Selenium Webdriver - 等待滚动条出现在屏幕上

Python OrderedDict 按日期排序

c# - 将工作日缩写字符串(包括范围)转换为 List<DayOfWeek>