时间戳在本地和可部署环境中的行为不同



我有一个spring引导应用程序,它使用以下方法将时间戳解析成我需要的格式

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 - 11 - t09:00:02.237 + 05:30

但是当我将它部署到运行nginx服务器的环境时,上面的方法返回:

2021 - 08 - 11 t09:00:02.237z

现在我的理解是它被转换为UTC格式(+0000/Z)。如果我说错了,请纠正我。但是期望的格式是2021-08-11T09:00:02.237+05:30(忽略+05:30)。我只是想用这个格式来代替Z),我怎么能在环境中实现呢?

ZonedDateTime nowHere = ZonedDateTime.of(ldt, ZoneId.systemDefault());
String timestamp = parsePattern.format(nowHere.withZoneSameInstant(ZoneId.of("UTC")));

这对你有用吗?

相关内容

  • 没有找到相关文章

最新更新