【发布时间】:2021-08-11 13:10:18
【问题描述】:
我有一个 spring boot 应用程序,它使用以下方法将时间戳解析为我需要的格式
public static String getDate(String input) {
DateTimeFormatter parsePattern = DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mm:ss.SSSSSSSSSXXXX");
LocalDateTime ldt = LocalDateTime.parse(input, parsePattern);
Date o = Date.from(ldt.atZone(ZoneId.systemDefault()).toInstant());
SimpleDateFormat sdf= new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSXXX");
return sdf.format(o);
}
现在当这段代码在本地机器上执行时,上面的方法返回:
2021-08-11T09:00:02.237+05:30
但是当我将它部署到运行 nginx 服务器的环境时,上述方法返回:
2021-08-11T09:00:02.237Z
现在我的理解是它正在转换为 UTC 格式(+0000/Z)。如果我错了,请纠正我。但预期的格式是 2021-08-11T09:00:02.237+05:30(忽略 +05:30。只希望时区采用这种格式而不是 Z)。我怎样才能在环境中实现这一点?
【问题讨论】:
-
当你想要一个特定的时区时,不要依赖
ZoneId.systemDefault()。 -
@Tom 感谢您的意见。但是我需要格式可以让我们说 UTC 它将是 +00:00 或 +0000。我不想要 Z
-
您可以使用
ZoneId.of("Asia/Kolkata")代替默认值。 -
@aksappy 我不想要那个时区。我不希望我的格式化字符串中包含 Z
-
this 是否回答您的问题
标签: java spring-boot nginx google-cloud-platform timestamp-with-timezone