gpt4 book ai didi

java - 如何将 `Period` 添加到 `java.util.Date` ?

转载 作者:行者123 更新时间:2023-12-01 19:33:29 26 4
gpt4 key购买 nike

我有一组预定义的类,它使用java.util.Date(无法更改),并且要求是将特定时间段添加到日期对象。

我发现了如何使用java.time.Periodjava.time.LocalDate来完成此操作,但找不到与java相关的任何内容.util.日期.

.....

Date baseDate = sdf.parse("2015-01-01 20:00");
Period twoMonthsAndFiveDays = Period.ofMonths(2).plusDays(5);

//ideal result would be a Date object with value "2015-03-06 20:00"

最佳答案

    DateTimeFormatter formatter = DateTimeFormatter.ofPattern("uuuu-MM-dd HH:mm");

// The given data
String dateTimeString = "2015-01-01 20:00";
Period twoMonthsAndFiveDays = Period.ofMonths(2).plusDays(5);

ZonedDateTime dateTime = LocalDateTime.parse(dateTimeString, formatter)
.atZone(ZoneId.systemDefault());
Instant newTime = dateTime.plus(twoMonthsAndFiveDays)
.toInstant();
Date oldfashionedDateObject = Date.from(newTime);

System.out.println(oldfashionedDateObject);

我将时区设置为亚洲/科伦坡,运行此代码片段并得到:

Fri Mar 06 20:00:00 IST 2015

如果您需要从来自预定义遗留类的日期开始:

    // The given data
Date originalDate = getDateFromLegacyApi();
Period twoMonthsAndFiveDays = Period.ofMonths(2).plusDays(5);

Instant newTime = originalDate.toInstant()
.atZone(ZoneId.systemDefault())
.plus(twoMonthsAndFiveDays)
.toInstant();
Date oldfashionedDateObject = Date.from(newTime);

所以转换是

java.util.Date <--> Instant <--> ZonedDateTime

ZonedDateTime 知道如何添加Period。仅当您需要与旧类进行互操作时,才进行与 Date 之间的转换。

关于java - 如何将 `Period` 添加到 `java.util.Date` ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58652982/

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