我目前正在使用.NET开发Web服务,该服务返回有关系统中用户的信息。这个Web服务必须足够通用,以便被用Java,PHP等编写的其他系统使用。我的问题是它必须返回默认时区,我不确定应该使用什么格式来返回时区,以便其他系统可以轻松使用它。
你有什么建议?
描述时区最常用的方法是"奥尔森"时区信息数据库:http://www.iana.org/time-zones。
大多数编程语言和框架都有库来基于该zoneinfo数据库进行日期时间计算。在某些情况下,它甚至是内置的(我知道的PHP),在Python中,默认的实现称为pytz。如果您正在寻找 JavaScript 实现,这里有一个时区检测脚本,这里有一个日期时间计算脚本。
只有当你使用非常晦涩的框架/语言时,你才需要自己在zoneinfo数据库周围实现日期时间逻辑。
由于您正在使用.NET,因此您可能会发现此问题很有帮助:来自奥尔森时区的.NET TimeZoneInfo。考虑使用像 noda-time 这样的库,它放弃了。NET的时区信息支持奥尔森时区。
更多 .NET 信息她: 时区信息 vs. 奥尔森数据库
我建议使用UTC时区作为日期/时间。大多数语言/库都有将 UTC 转换为所需任何时区的方法。
如果您需要表示用户的实际默认时区,请使用与 UTC 的偏移量(例如:东部时间为 -5)。