这是一个非常简单的(希望)问题。我是刚接触.NET中的DateTime转换的新手。

我有一个具有DateTime属性的WCF服务-将其称为BookingDate。

有人将其以以下格式传递给我的WCF服务:

<a:BookingDate>2012-03-26T17:03:00-04:00</a:BookingDate>


它所在的服务器设置为UTC的时区(里斯本,伦敦,都柏林)。

当我在数据库中存储相应的值时,它将值设置为:

2012-03-26 22:03


我以为我错误地认为.NET框架(作为WCF序列化/反序列化过程的一部分)会将其弹出到UTC的.Net Datetime中(因为上面有4个小时的负偏移)

我期待:2012-03-26 21:03

因此,我的问题是:我需要打电话给:

var date = fromClientWCFService.BookingDate.ToUniversalTime();


为了得到我期望的21:03时间?

如果不是,是否有WCF设置告诉我的服务将DateTimes转换为UTC,而不是服务器时区?

提前致谢

标记

编辑:

从1个答案中,我可以看到可以使用DateTimeOffset。接下来,将进行以下工作:var offset = DateTimeOffset.Parse("2012-03-26T17:03:00-0400");返回结果:2012-03-26 21:03

最佳答案

代替使用DateTime structure,应使用DateTimeOffset structure

DateTimeOffset结构捕获指定时间的偏移量(默认情况下不是UTC,它是由应用程序的范围定义的,但最常见的偏移量是UTC)以及日期/时间信息,该信息将流通过WCF调用(以及假定支持该类型的数据库)。在这种情况下,SQL Server从2008年开始具有datetimeoffset data type

事实上,using DateTimeOffset is the preferred methods of dealing with date/time data in almost all situations。从上一个链接注意:


  DateTimeOffset值的这些用法比这些用法更常见
  用于DateTime值。因此,应考虑DateTimeOffset
  应用程序开发的默认日期和时间类型。

关于c# - WCF/.NET中的C#UTC日期时间查询,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/9878560/

10-13 06:47