【问题标题】:Java Date to String without suffix timezone没有后缀时区的Java日期到字符串
【发布时间】: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 APILocalDate。额外加分:它的toString 方法为您提供了您想要的字符串。
  • @OleV.V.你是对的。但是日历是由 jaxb 生成的,所以我无法决定使用哪个。
  • 我刚看到一个新东西,认为它可能是这个问题的根本原因。 jar 中有 2 个同名的类和包。它们来自 2 个不同的依赖项。弹簧靴选择了第一个被发现使用的。不知何故,它选择了不包含上述方法的类。
  • 一个有趣的观察结果和您观察到的行为的可能原因,

标签: java spring date amazon-ec2 timezone


【解决方案1】:

我想确认上面的实现是正确的。我的问题的原因来自另一个方面。 Jaxb 在 Jar 中生成了 2 个同名和包的类,上下文将选择第一个找到要使用的类。一如既往,它没有选择我的实现。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-07-18
    • 2017-09-25
    • 2013-09-20
    • 1970-01-01
    • 2011-08-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多