Mem*_*his 2 c# timezone datetime dst
我处于一种情况,我的程序有2个集成到第三方系统.这些集成包括:1)TCP/IP上的XML协议和2)WCF中的Web服务.
在任何一种情况下,集成合作伙伴都需要传递给我们的TimeStamps/DateTimes以包含有关TimeZone和Daylight Savings的信息,因此无论客户的TimeZone/Position如何,他们都可以显示正确的时间.
我宁愿不改变当前的协议,在任何一种情况下他们都期望DateTime,所以我的问题是:是否可以将TimeZone和Daylight Savings信息作为DateTime的一部分传递?
现在我的时间戳看起来像这样:
2011-04-27T15:14:13.963
Run Code Online (Sandbox Code Playgroud)
我希望看起来像这样(我位于丹麦,所以我们使用CEST)并能够使用DateTime对象传输信息
2011-04-27T15:14:13.963 +01:00
Run Code Online (Sandbox Code Playgroud)
但是,我不知道如何实现这一点,也不考虑夏令时因素
如果您需要知道日期/时间和时区,则必须提出自己的封装:
DateTime 仅包含日期/时间以及是否为"本地"(在系统时区中)或UTC的信息DateTimeOffset 包含有关日期/时间及其与UTC的偏移量的信息,但这与其时区不同你可以结合起来TimeZoneInfo,并DateTimeOffset在结构中虽然.
或者,如果你很高兴使用beta-quality,API-could-still-change软件,你可以使用Noda Time,这个项目我开始基本上将Joda Time API 移植到.NET.
就流程内表示而言......就传递信息而言,您需要找出您的集成合作伙伴使用的内容.例如,他们可能想要UTC时间和奥尔森时区名称......或者他们可能只想要偏移量.
如果您只需要知道创建时间戳时用户的本地时间,那么包括UTC的"当前"偏移量可能就足够了,而不是包括全时区信息.这只是意味着你不知道2秒后的当地时间是什么时候......