Java中IST格式时间字符串转换为UTC格式失败问题求助
IST转UTC代码问题排查
核心问题点
- 解析时区配置错误:你当前给
DateTimeFormatter设置的时区是UTC,相当于把输入的IST时间字符串直接当成UTC时间解析,完全没有时区转换的基础。输入的源时间是IST格式,所以解析阶段的时区应该配置为IST对应的区域ID,注意IST存在多地区歧义(印度/以色列/爱尔兰标准时间),推荐使用具体区域ID避免解析错误,例如印度标准时间使用ZoneId.of("Asia/Kolkata")。 - 时区转换逻辑缺失:你解析得到
ZonedDateTime后没有手动转换到UTC时区,直接调用toLocalDateTime()会丢弃时区信息,取的是源IST时区对应的本地时间,无法满足转UTC的需求。 - 示例代码语法问题:
String time = 124200;和String date = 05/09/21;缺少字符串引号,实际运行会编译报错,正确写法应为String time = "124200";、String date = "05/09/21";。
修正后示例代码
String time = "124200"; String date = "05/09/21"; // 解析阶段指定源时间的时区(此处以印度标准时间为例,可替换为你实际对应的IST区域ID) DateTimeFormatter parser = DateTimeFormatter.ofPattern("dd/MM/yyHHmmss") .withZone(ZoneId.of("Asia/Kolkata")); String dateInString = date.concat(time); // 解析得到IST时区的ZonedDateTime ZonedDateTime istDateTime = ZonedDateTime.parse(dateInString, parser); // 转换为UTC时区 ZonedDateTime utcDateTime = istDateTime.withZoneSameInstant(ZoneId.of("UTC")); // 输出UTC时间字符串 return Timestamp.valueOf(utcDateTime.toLocalDateTime()).toString();
内容的提问来源于stack exchange,提问作者Programmer
相关产品推荐
相关产品推荐

