java - 如何使用时钟类从 Java 中的当前日期减去 2 个月
问题描述
我正在编写代码,我需要使用 Clock 类来获取当前时间。我想用 2 个月减去当前日期。
这是代码:
public class DemoApp {
private Clock clock = Clock.systemDefaultZone();
public List<String> subtractMonths(String[][] str) {
List<String> ids = new ArrayList<>();
// The code
return ids;
}
}
在主类中,我有这个字符串数组:
private static final String[][] str = {
{"id1", "2017-11-01T14:10:30"},
{"id2", "2018-01-20T18:01:34"},
{"id3", "2018-01-22T08:45:22"},
{"id4", "2018-02-18T12:42:37"},
{"id5", "2019-03-16T03:56:32"},
};
在主类中,我将subtractMonths
使用 str 参数调用该方法,如果日期不是当前月份和上个月,则返回 id。例如,如果当前月份是 1 月,则仅返回 12 月之前的月份的 id。任何反馈将不胜感激!
解决方案
使用LocalDateTime
orInstant
你有方法minus()
来plus()
减去或增加时间量:
LocalDateTime beforeTwoMonths = LocalDateTime.now()
.minus(2, ChronoUnit.MONTHS);
或者使用以下minusMonths()
方法:
LocalDateTime beforeTwoMonths = LocalDateTime.now().minusMonths(2);
仅使用Clock
类是不可能的。唯一的方法是将其转换为ZonedDateTime
并减去月份:
ZonedDateTime beforeTwoMonths = Clock.systemDefaultZone().instant().atZone(ZoneId.systemDefault()).minusMonths(2);
否则你可以自己计算,但我认为这不是最好的方法。
推荐阅读
- scala - 私人[路线]是什么意思?
- android - 为什么这个未来永远不会完成?
- python-3.x - 如何在不响应 python3 的情况下发送发布请求
- node.js - 在从 UI 传递到后端服务器时,我们如何隐藏身份验证凭据等信息?
- c# - ASP NET CORE MVC - CLI 命令,如 PHP Symfony
- mongodb - mongodb 聚合总是在集合对象的数组中返回 null
- excel - 将表格列中的自动过滤单元格着色为红色的各种方法
- kubernetes - 将节点端口直接映射到 pod,绕过服务和入口
- php - 垂直工作台输出
- xml - Android Studio (XML):按钮上的垂直线消失了