我有一个由C#后端和Java前端组成的系统.的C#后端与其他系统和一些移动设备进行通信.
在C#方面,我的任务是识别来自移动设备的时间戳的时区并创建相应的TimeZoneInfo对象.这没有任何问题.
在Java方面,我必须显示时区信息以及移动设备发送的数据.我正在使用TimeZone该类在我的域对象中存储时区信息.
现在的问题是我如何创建一个Java的TimeZon,其与对应ê对象C#的TimeZoneInfo对象?AFAIK时区没有任何唯一ID.此外,名称也不同(例如在C#中:" Central Europe Standard Time",在Java中 " Central Europe Time").甚至C#和Java中的时区数量都不相同!
你知道"时间"独立于"时区",所以我不会那么说:)
"TimeZone"实际上更像是操作系统的一种功能,而不是编程语言.
Android"时区ID"对应于标准的IANA"Olson数据库":
等式的另一半是将.Net时区映射到"标准".此链接应该有所帮助:
正如paulsm4所说,你可以将Windows名称映射到TZDB(又名Olson,又名tz,又名zoneinfo)名称 - 尽管映射会定期更改,您应该查看Unicode CLDR以获取更多详细信息.您应该知道映射表的格式随着时间的推移而发生了变化,并且某些Windows ID映射到多个TZDB ID.(有些人完全失踪了.)
作为替代方案,您可以考虑完全放弃Windows时区ID,并在整个堆栈中使用TZDB,如果您使用Noda Time,这是我已经工作了一段时间的.NET日期/时间API.如果你使用Joda Time,你也会发现你的Java日期/时间工作更容易,这是我基于Noda Time的"引擎"的库.这比使用更漂亮和Java编写的.DateCalendar
| 归档时间: |
|
| 查看次数: |
4612 次 |
| 最近记录: |