java - 从Java中的当天减去日期
问题描述
我有一个特定的日期格式。我可以减去 2 个日期,但我无法从未来的日期中减去今天的日期。
我找到了获取今天日期的方法
DateTimeFormatter dtf = DateTimeFormatter.ofPattern("dd/MM/yyyy");
LocalDateTime now = LocalDateTime.now();
System.out.println(dtf.format(now));
这是我减去 2 个日期(字符串)的方法
public boolean DateDiff(String datep,String dater) {
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("dd/MM/yyyy");
LocalDate date1 = LocalDate.parse(datep, formatter);
LocalDate date2 = LocalDate.parse(dater, formatter);
long elapsedDays = ChronoUnit.DAYS.between(date1, date2);
我无法将当前日期转换为字符串,因此我可以减去 2 个相同类型的变量。现在 LocalDateTime是什么类型
解决方案
使用 LocalDate 的 minusDays() 函数来减去日期就像这个一样简单:
LocalDate now = LocalDate.now();
LocalDate thirtyDaysAgo = now.minusDays(30);
如果你有一个标准的日期字符串,见“2020-08-27”,你可以这样解析:
String date = "2020-08-27";
LocalDate thirtyDaysAgo = LocalDate.parse(date).minusDays(30);
System.out.println(thirtyDaysAgo); //prints 2020-07-28
如果您有特殊格式的日期,请参阅“2020/08/27”,您可以这样解析:
String date = "2020/08/27";
LocalDate thirtyDaysAgo = LocalDate.parse(date, DateTimeFormatter.ofPattern("yyyy/MM/dd")).minusDays(30);
System.out.println(thirtyDaysAgo); //prints 2020-07-28
要将 LocalDate 转换为具有格式的字符串,您可以这样做:
LocalDate date = LocalDate.now();
String formatedDate = date.format(DateTimeFormatter.ofPattern("yyyy/MM/dd"));
System.out.println(formatedDate); //prints 2020/08/27
推荐阅读
- entity-framework - 出现错误“无法加载文件或程序集 'EntityFramework, Version=6.0.0.0, Culture=neutral' 或其依赖项之一。”
- bigdata - 如何在Scala中将数据从名义列转换为谨慎列
- python - 改进了模糊和低光图像的配准
- php - lxc 与 nextcloud 和 nginx 代理:未知:POST Content-Length
- html - Changing the size of individual element in flexbox
- c++ - 使非 const 对象成员函数在 openMP 中可用
- sql - 根据分组依据和其他条件更新列
- docker - 挂载被拒绝:\r\n路径 /a/b \r\n 未从 OS X 共享,并且不为 Docker 所知
- android - 我可以使用 EditText 和 Button 更改 URL 吗?
- c++ - While loop inside if-statement with the same condition inside?