.NETWeb服务中的日期时区转换
我有一个web服务(实际上是一个支持silverlight的wcf服务,但出于所有目的,它是一个web服务),其方法带有一个datetime参数。该方法从客户端调用,该客户端可能位于不同的时区。承载web服务的服务处于太平洋标准时间,web服务似乎正在将日期时间值转换为服务器时区。web服务的目的是将datetime值与数据库中的值进行比较,但数据库中的值是基于客户端时区的,因此由于转换,比较不起作用.NETWeb服务中的日期时区转换,.net,web-services,datetime,timezone,.net,Web Services,Datetime,Timezone,我有一个web服务(实际上是一个支持silverlight的wcf服务,但出于所有目的,它是一个web服务),其方法带有一个datetime参数。该方法从客户端调用,该客户端可能位于不同的时区。承载web服务的服务处于太平洋标准时间,web服务似乎正在将日期时间值转换为服务器时区。web服务的目的是将datetime值与数据库中的值进行比较,但数据库中的值是基于客户端时区的,因此由于转换,比较不起作用 有没有办法关闭转换功能?看看这个问题,它讨论了你想要什么 看起来最简单的方法是在webm
有没有办法关闭转换功能?看看这个问题,它讨论了你想要什么
- 客户端提交日期时间值为'12:00:00:00 PM CST'的请求
- PST中的服务器在“10:00:00:00 PM PST”接收/解释请求
如果是这种情况,能否将所有数据转换为UTC时间?如果执行查询查找,这意味着将存储的数据也转换为UTC。不太正确,因为DateTime实例(结构)不包含时区信息。从.NET开始,每个DateTime结构上都有一个属性。。。3.0? 我不知道版本。“种类”是UTC、本地或未指定。因此,虽然它本身不是一个时区,但它表明时间不是以本地时区表示,就是以世界时区表示。查看文档以了解更多信息 要回答原始问题,请将每个人转换为单个标准时区。UTC工作得很好,也很容易,因为BCL中内置了一些方法,但选择哪个时区并不重要。让每个人都同意一个标准
您可以做的另一件事是将时间值作为“TotalSeconds”值传输,因为。。。过去的某个特定时间。比如1970年1月1日(unix时间),或者1601年1月1日(windows文件时间)。但该方法隐含的含义是,所有合作方都同意该时间起点为UTC。因此,从开始到现在的一百万秒(“纪元”)指的是同一时刻,无论我在埃尔帕索、纳舒亚、东京还是伦敦 当一个日期时间被序列化时,它的格式包括时区信息。抱歉,误解了这个问题——听起来好像是服务在转换值,而不是WCF内部。我必须这样做。在数据库中将日期时间存储为utc,并在调用web服务之前将客户端值转换为utc。由于我们专门使用utc,因此我从未在我们服务的任何方法参数中看到日期时间转换。乐意帮忙;我这边也学到了一些东西。:-)