我的架构的带区域偏移的UTC或本地时间?

时间:2011-01-31 14:34:49

标签: java soap xsd timezone utc

我正在为我的网络服务定义一个架构,该架构将从多个国家/地区进行访问。我想知道应该使用以下哪个(两者都根据xsd dateTime类型和ISO 8601有效)和哪一个符合WS-I ?< / p>

  1. UTC 格式,如14:15Z或14:15:00Z。附加的Z字母表示时间以UTC表示。
  2. 或者,使用其中一种格式[+/-] hh:mm的本地时间和明确的区域指定。例如:12:15 + 02:00

3 个答案:

答案 0 :(得分:3)

这有点主观 - 两者都可以。我更喜欢UTC。您可能还需要将时间转换为客户端本地(并且您应该依赖来自客户端的信息来执行此操作,因为用户可以从不同的时区登录)。以UTC格式存储时,您不必担心存储的发生方式,因为所有时间都在同一时区中表示,并且更容易比较(从而排序)。

答案 1 :(得分:1)

这取决于用例。有时知道客户所在的时区是有用的。如果用户在他们的时区输入13:00的时间,他们可能仍然希望在检索日期时看到13:00。

注意,我不是说你把时间存放在当地(当然会非常糟糕),只是你可能想要保持时区。

答案 2 :(得分:1)

两种形式都与WS-I Basic Profile相符,因为它们都是xsd:dateTime的有效词法格式。

通常,服务描述会在模式中指定xsd:dateTime,并且通常不会进一步限制词法格式。在这种情况下,服务实现应准备好处理任何有效的xsd:dateTime值,即应该能够处理从客户端收到的数据中的任何一种形式。

如果您真的想要,可以通过定义基于xsd:dateTime和其他模式构面的自定义类型来限制服务描述的架构中允许的词法格式。我相信这仍然是WS-I Basic配置文件,但除非你有一个非常令人信服的理由,否则我会避免这样做。根据我的经验,基于XSD类型和添加的模式方面的自定义类型并不总能很好地与所有XML工具集一起使用,因此您可以通过添加xsd:dateTime之外的其他约束来为客户端创建问题。