【发布时间】:2021-05-08 16:08:18
【问题描述】:
我已经创建了下面的函数:
public static String marshalDate(Calendar value) {
if (value == null) {
return null;
} else {
DateFormat date = new SimpleDateFormat("yyyy-MM-dd");
String format = date.format(value.getTime());
return format;
}
}
输入将是日历,字符串值为:2014-10-17 00:00:00.000000
运行上述函数后的预期结果应该是:
2014-10-17
当我在本地部署 Spring Boot 应用程序并在本地访问 API 时,它可以正常工作。
但是在 AWS 上部署 Spring Boot 应用程序时,我从本地访问 API,我收到的值是:
2014-10-17-04:00
我猜服务器返回时区作为后缀。
我怎样才能删除-04:00上面的功能?
非常感谢
【问题讨论】:
-
问题不在于您向我们展示的代码。我猜不出它在哪里。
-
我建议你不要使用
Calendar。该课程设计不良且早已过时。而是使用来自java.time, the modern Java date and time API 的LocalDate。额外加分:它的toString方法为您提供了您想要的字符串。 -
@OleV.V.你是对的。但是日历是由 jaxb 生成的,所以我无法决定使用哪个。
-
我刚看到一个新东西,认为它可能是这个问题的根本原因。 jar 中有 2 个同名的类和包。它们来自 2 个不同的依赖项。弹簧靴选择了第一个被发现使用的。不知何故,它选择了不包含上述方法的类。
-
一个有趣的观察结果和您观察到的行为的可能原因,
标签: java spring date amazon-ec2 timezone