Java Date Time差异

时间:2012-10-06 05:39:00

标签: java spring date time mocking

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

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

当我在本地放置并断言并运行它时,它会通过,但是当相同的代码被推送到bamboo构建服务器时,它生成的actualValue为'2020-11-10T00:00:00.000Z',因此我的测试失败了。

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

  2. 我可以做同样的事情或任何其他解决方法吗?

  3. 注意:在没有时间的情况下使字符串或比较日期不是一个选项,因为我使用的是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>"),
    

1 个答案:

答案 0 :(得分:3)

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

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

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