提问人:Varun Yadav 提问时间:2/9/2023 最后编辑:AnonymousVarun Yadav 更新时间:2/9/2023 访问量:241
java 中从 SGT 到 UTC 的时间转换在 12:35:42 不起作用 [重复]
Time Conversion in java from SGT to UTC not working for 12:35:42 [duplicate]
问:
尝试将新加坡时间转换为 UTc,并需要OffsetDateTime中的结果。下面的代码适用于我的所有场景,除了一个用于 12:35 的场景.....中午 12:00 不知何故给出了错误的结果。应该在 2 月 8 日早上 04:35 给,而是给 2 月 7 日 16:35。 有什么办法可以解决它
代码片段如下
if (dbTime == null) {
return null;
}
SimpleDateFormat dateTimeFormatter = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
dateTimeFormatter.setTimeZone(TimeZone.getTimeZone(ZoneId.of("Asia/Singapore")));
Instant instant = null;
try {
dateTimeFormatter.parse(dbTime);
instant = dateTimeFormatter.parse(dbTime).toInstant();
} catch (ParseException e) {
LOGGER.warn("Could not parse ({}) to valid DateTime ", dbTime, e);
return null;
}
OffsetDateTime offsetDateTime = instant.atOffset(ZoneOffset.UTC);
return offsetDateTime;
}
@Test
void canConvertSGTToUTC() {
String sqlDate = "2023-02-08 12:35:45.0";
var result = dateParser.parseToOffsetDateTime(sqlDate);
assertEquals( "2023-02-08T04:35:45Z", result.toString());
}
SGT 或亚洲/新加坡是服务器的本地系统时间。
答:
0赞
Avanika Agarwal
2/9/2023
#1
使用“HH:mm:ss”格式,其中“H”是 24 小时格式。 “h”是 12 小时格式。应该解决你的问题
评论
0赞
Anonymous
2/9/2023
这是正确的,正如我在您发布答案后链接到的原始问题中所述。
评论
SimpleDateFormat
DateTimeFormatter
LocalDateTime.parse)CharSequence, DateTimeFormatter)
dbTime
String
LocalDateTime