带有时区的午夜日期发送到时区未知系统



首先快速总结我的问题,然后在下面进一步详细介绍。

我有一个以00:00:00为时间的日历日期,因为它对业务并不重要。该值被发送到一个Web服务,该Web服务生成一个XML,其中该值以以下格式结束:2014-09-12T07:55:07.000Z。我注意到,这是转换为+0时区(UTC)的原始值(我们的时区是CET,+1,但由于夏令时,目前是CEST,+2)。

我目前不知道读取XML的系统是考虑时区,还是提取2014-09-12并假设它在+2时区。

我注意到,发送"2014-09-12 00:00:00"本地时间(tz+2)在XML中最终会变成2014-09-11T22:00:00.000Z。毫不奇怪,它转换了它……但如果它被另一个系统解释为这样,它会认为日期比它应该的早一天。

如何确保按预期解释

我想用中午而不是午夜来确保时区的变化不会影响口译,但这感觉像是一个肮脏的把戏。或者我应该作弊,让日历时区为+0,这样在放入XML时就不会发生时间偏移?


Q&A

为什么要"向网络服务发送日历"

应用程序在Coldfusion 7中。为了与SOAP Web服务通信,服务器生成一组符合Web服务所需参数定义的Java类。这个论点显然是一个有很多属性和子属性的大对象。因此,一个实例化主Java类,并使用setter和其他类的进一步实例化来"填充"所有属性。

使用日历吗

是的,Java对象定义不能更改。它要求所有日期都使用日历。

这个2014-09-11T22:00.0000Z格式是什么

我不知道。这似乎是最终系统对日期的期望。

您应该使用JODA

除非JODA类扩展了Calendar并与Java 1.3(Coldfusion服务器上的当前Java版本——是的,它很旧)兼容,否则我怀疑它是否能工作。

在另一个系统上你能做多少

另一个系统由另一个团队负责,显然很难改变。我希望解决方案必须在我们的应用程序中找到。

尽管Calendar对象中的时间值对您的业务并不重要,但它对您使用且无法控制的Web服务来说是重要的。日历对象指定一个时刻,因此您必须确保该时刻在对您重要的一天中。我建议你使用中午,正如你已经建议的那样。我还建议您在UTC时区创建日历对象:

Calendar myCalendar=Calendar.getInstance(TimeZone.getTimeZone("UTC"));

相关内容

  • 没有找到相关文章

最新更新