gpt4 book ai didi

java - 如何获得上个月的确切第一个日期和时间?

转载 作者:行者123 更新时间:2023-12-04 12:13:56 31 4
gpt4 key购买 nike

我希望在 00:00:00Z 获得上个月第一天的确切日期.
所以,这是我目前的解决方案:

public static String getStartingDateAndTimeOfLastMonth() {
int dayOfCurrentMonth = ZonedDateTime.now().getDayOfMonth();
return ZonedDateTime.now()
.minusDays(dayOfCurrentMonth - 1)
.minusMonths(1)
.format(DateTimeFormatter.ISO_INSTANT);
}
当我调用方法时:
String startDate = CustomUtilsFunctions.getStartingDateAndTimeOfLastMonth();
System.out.println("startDate: " + startDate);
当前解决方案的输出是:
startDate: 2021-05-01T07:22:10.389Z
可以看到,输出的时间是 07:22:10.389Z但是,我不知道将它转到 00:00:00:000Z 的最简单方法
所以所需的输出是:
startDate: 2021-05-01T00:00:00.000Z
观点:
我知道,我可以提取 小时 , 分钟然后使用 minus() ,但我相信一定有一个更简单的解决方案。

最佳答案

您可以先创建所需的日期,然后将其与设定的时间一起使用来撰写 DateTime .根据您的用例,您可以使用 LocalDateTimeZonedDateTime .

LocalDate day = LocalDate.now()
.minusMonths(1)
.withDayOfMonth(1);

ZonedDateTime target = ZonedDateTime.of(day, LocalTime.MIDNIGHT, ZoneId.systemDefault());

System.out.println(target);
另一种选择是使用 turncatedTo (正如@Thomas 在评论中提到的那样)
ZonedDateTime target = ZonedDateTime.now()
.minusMonths(1)
.withDayOfMonth(1)
.truncatedTo(ChronoUnit.DAYS)
.withZoneSameLocal(ZoneId.of("UTC")); // optional depending on your case

关于java - 如何获得上个月的确切第一个日期和时间?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67916622/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com