不知何故,客户端在WCF中检测到服务器的时区

时间:2013-01-03 03:18:45

标签: wcf datetime

我有这种情况:

服务器位于(GMT +3)时区

客户位于(GMT -5)时区

服务器向客户端返回DateTime,假设它是“10JAN2013 00:00”,而DateTime的AFAIK没有附加时区信息。客户端的时间转换为客户端的时区,即“09JAN2013 16:00”! DTK指定为DTK.Unspecified。

我的问题是,如果DateTime没有时区信息,客户端如何知道服务器的时区?这对我来说很困惑!它是在SOAP的标题中发送还是类似的东西?

1 个答案:

答案 0 :(得分:1)

他们可能知道也可能不知道。当在客户端和服务器之间传递DateTime个对象时,它们被序列化为双方理解的一些通用格式。在某些格式(例如XML)中,时区信息是通过网络发送的:如果您有DateTime DateTimeKind.Utc,则“Z”将附加到序列化日期;对于Local,将添加时区,对于Unspecified,不会添加任何内容,因此对方知道要使用的格式。在其他格式(如JSON)中,如果类型为Utc,服务器将不会在日期时间内发送任何内容,但会为其他类型添加本地时区信息(对于{的JSON格式没有区别{1}}和Local; IIRC接收方会将此类信息视为Unspecified)。

如果你想查看网络上的内容,你可以运行下面的程序,同时拥有一个网络捕获工具,如Fiddler,以查看客户端发送给服务器的内容。

Local