gpt4 book ai didi

java - 将小时添加到包含 00 :00:00 的字符串

转载 作者:行者123 更新时间:2023-12-02 05:49:00 24 4
gpt4 key购买 nike

我将把 dateTime 变量发送到一个 API,该 API 需要一个包含时间和日期的字符串。但我注意到存在时间差异,因为当我发送该变量时,最终会增加两个小时。所以我需要在时间变量中添加 2 小时。

我尝试拆分时间变量,将第一个元素解析为 int 并添加 2,然后格式化为 String 等等,但这似乎非常不必要地长。有没有更简单的方法?我试图弄清楚如何使用时间对象并设置日期和时间,但我只知道如何设置为当前时间,这是我不想做的。下面的代码包含所需的值。

String date = "2019-05-09";
String time = "10:00:00";
String dateTime = (date + "T" + time + "Z");

最佳答案

Is there any easier way?

是的,使用现代的java.time类。

显然,您正在尝试传达该日期上午 10 点(UTC 时间)的时刻。示例代码中的 Z 表示 UTC,发音为“Zulu”。

为此,请使用 OffsetDateTime 以及由 ZoneOffset.UTC 常量指定的偏移量。

LocalDate ld = LocalDate.parse( "2019-05-09" ) ;
LocalTime lt = LocalTime.parse( "10:00:00" ) ;
OffsetDateTime odt = OffsetDateTime.of( ld , lt , ZoneOffset.UTC ) ;

显然您想将此值作为标准 ISO 8601 中的字符串发送格式。解析/生成字符串时,java.time 类中默认使用这些格式。

String output = odt.toString() ;

您没有准确解释这 2 小时的差异是如何或在何处出现的。我猜您看到的结果是从 UTC 调整为某个时区后的结果。如果是这样,你就没有问题

如果两个人在相隔两个小时的时区打电话,如果他们同时抬头从各自墙上的时钟上读取当前时间,一个人会看到上午 10 点,而另一个人会看到中午 12 点。同一时刻,时间轴上的同一点,不同的挂钟时间。

您可以通过为可疑时区应用 ZoneId 来验证这一点,以查看生成的 ZonedDateTime 对象中的挂钟时间值。

ZoneId z = ZoneId.of( "Europe/Paris" ) ;
ZonedDateTime zdt = odt.atZoneSameInstant( z ) ; // Same moment, same point on the timeline, different wall-click time.

关于java - 将小时添加到包含 00 :00:00 的字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56066580/

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