我有一个特殊的日期格式。我可以减去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现在是哪种类型?
答案 0 :(得分:2)
使用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
答案 1 :(得分:1)
使用LocalDate
代替LocalDateTime
获取今天的日期
LocalDate currentDate = LocalDate.now();
由于某些原因,如果您仍然想使用LocalDateTime
来获取今天的日期,这就是您可以采用的方式
LocalDateTime currentDateTime = LocalDateTime.now();
LocalDate currentDate = currentDateTime.toLocalDate();
如果您要按以下所需的格式将currentDate
转换为String
:
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("dd/MM/yyyy");
String currentDateString = currentDate.format(formatter);
如果您拥有的两个日期均为LocalDate
类型,那么您可以找到它们之间的天数,如下所示:
public long DateDiff(LocalDate date1,LocalDate date2) {
return Duration.between(date1, date2).toDays();
}
如果您拥有的两个日期均为String
类型,那么您可以找到它们之间的天数,如下所示:
public long DateDiff(String dateString1,String dateString2) {
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("dd/MM/yyyy");
LocalDate date1 = LocalDate.parse(dateString1, formatter);
LocalDate date2 = LocalDate.parse(dateString2, formatter);
return Duration.between(date1, date2).toDays();
}
希望能解决您的问题
答案 2 :(得分:0)
在Java中处理日期时,可以使用joda-time
库,这是一种幸福。
减去2个日期
DateTime yesterday = new DateTime().withTimeAtStartOfDay().minusMinutes(10);
DateTime twoDaysFromToday = new DateTime().withTimeAtStartOfDay().plusDays(2);
Days.daysBetween(yesterday.toLocalDate(), twoDaysFromToday.toLocalDate()).getDays();
答案 3 :(得分:0)
使用LocalDate
(而不是LocalDateTime
)。
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("dd/MM/yyyy");
LocalDate today = LocalDate.now(ZoneId.of("Asia/Calcutta"));
LocalDate futureDate = LocalDate.parse("26/09/2020", formatter);
long elapsedDays = ChronoUnit.DAYS.between(today, futureDate);
System.out.println("Days until future date: " + elapsedDays);
当前运行时输出为:
距离未来日期的天数:29