【发布时间】:2019-09-27 17:06:06
【问题描述】:
我要将 dateTime 变量发送到一个 API,该 API 需要一个包含时间和日期的字符串。但是我注意到存在时间差,因为当我发送该变量时,它最终会增加两个小时。所以我需要在时间变量上加 2 小时。
我尝试拆分时间变量,将第一个元素解析为 int 并添加 2,然后格式化为 String 等等,但这似乎非常不必要。有没有更简单的方法?我试图弄清楚如何使用时间对象并设置日期和时间,但我只知道如何设置为当前时间,我不想这样做。下面的代码包含所需的值。
String date = "2019-05-09";
String time = "10:00:00";
String dateTime = (date + "T" + time + "Z");
【问题讨论】:
-
“所以我需要在时间变量中增加 2 小时” - 或者...使用正确的时区?否则实际解析它可能比进行字符串操作更健壮。看看
java.timeAPI。 -
API 是否需要 UTC/GMT?
-
寻找 java.time.ZonedDateTime、LocalDateTime 类之类的 java 日期 API。他们有很好的api来添加小时、分钟、秒、时区转换等。它还有格式化程序,可以将其转换为您需要的格式。
-
Instant.parse(dateTime).plus(2, ChronoUnit.HOURS).toString() -
您可以尝试只发送
-02:00而不是Z。这告诉接收器时间来自比 UTC 晚 2 小时的时区,因此他们将为您添加 2 小时。可能。与其说是更方便,倒不如说是更正确。不过,请检查是否全年相差 2 小时。
标签: java string date converters