【问题标题】:Java Date Time discrepancyJava 日期时间差异
【发布时间】:2012-10-06 05:38:59
【问题描述】:

在编写集成测试时,我期待响应中有一个硬编码的日期。

基本上我硬编码expected date value '2020-11-10T00:00:00.000-05:00' 然后跑new GregorianCalendar(2020, 10, 10).getTime()

当我在本地放置和断言并运行它时,它通过了,但是当相同的代码被推送到竹构建服务器时,它生成的实际值是'2020-11-10T00:00:00.000Z',所以我的测试失败了。

  1. 为什么同一个 calendar.getTime 生成两个不同的时间,是因为服务器机器配置为 GMT 吗?

  2. 我可以做些什么来让它们同时使用或任何其他解决方法吗?

注意:在这里,将其设为字符串或比较没有时间的日期不是一个选项,因为我使用的是 Spring MockWebServiceServer,我必须在其中硬编码 responseXML 并指定日期,就像在 Enum 中这样。

 REQUESTAUTOMATESETTLEMENTWORKCASE("<aut:AutomateSettlementWorkcaseRequest xmlns:aut=\"http://www.abcd.com/abcd/workflow/services/workcase/model/AutomateSettlementWorkcase_1_0_0\">" +
          "  <aut:customerAccountId>5049903033584324</aut:customerAccountId>\n" +
          "  <aut:settlementDate>2020-11-10T00:00:00.000-05:00</aut:settlementDate>\n" +
          "  </aut:AutomateSettlementWorkcaseRequest>"),

【问题讨论】:

    标签: java spring date time mocking


    【解决方案1】:

    输入数据中的“-5”部分将其丢弃...理想情况下,您应该在构建日历时指定时区,然后将其设置为 UTC 凌晨 5 点(例如)。基本上,2020-11-10T00:00:00.000-05:002020-11-10T05:00:00.000Z 是同一时刻。

    现在,我们不知道保留与 UTC 的偏移是否对您很重要。如果是这样,您需要在日历中设置一个适当的时区 - 一个与生成输入数据的规则相同的时区。如果不是,我会使用 UTC 并适当地设置时间。

    我个人建议使用Joda Time 而不是CalendarDate - 这是一个更好 更好的日期和时间 API。对于初学者来说,没有从 0 开始的月份:)

    【讨论】:

    • 我很想使用 Joda Time,但在我的工作场所它不适合我。获得 11 月对我来说也不是问题(那是我期待的日期)。我只是想知道当 calender.getTime() 在构建服务器上运行但在我的本地机器上运行 -05:00 时,为什么它会产生尾随 Z。我也尝试将时区设置为 UTC,但它在服务器中仍然有尾随 Z。 GregorianCalendar cal = new GregorianCalendar(2020, 10, 10); TimeZone tz=TimeZone.getTimeZone("UTC"); cal.setTimeZone(tz);
    • @Himalay:后面的 Z 表示 UTC。您应该计算出您想要 使用的时区,并明确设置它。将编辑关于 11 月的部分 - 我误读了您的测试用例。
    • 正如您在上面的评论中看到的那样,我明确地将 TimeZone 设置为 UTC,但它不会在我的本地机器中产生尾随 Z,而只是在服务器中?感谢您的回复
    • @Himalay:嗯,一方面,你没有给出任何关于如何打印值的指示。演示问题的简短但完整示例将很有用。目前我们只是得到了一些零碎的信息。
    • 在使用所有来源撰写问题时,我意识到时区正在其他地方重置,我现在很好。谢谢你的耐心:)
    猜你喜欢
    • 2012-06-26
    • 2013-02-20
    • 1970-01-01
    • 1970-01-01
    • 2012-02-04
    • 2016-05-12
    • 2013-03-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多