这是一个非常简单(希望如此)的问题。我刚开始在 .NET 中使用日期时间转换。
我有一个 WCF 服务,它有一个 DateTime 属性 - 称之为 BookingDate。
有人以以下格式将其传递给我的 WCF 服务:
<a:BookingDate>2012-03-26T17:03:00-04:00</a:BookingDate>
它所在的服务器设置为 UTC 时区(里斯本、伦敦、都柏林)。
当我将相应的值存储在数据库中时,它将该值设置为:
2012-03-26 22:03
我认为,我错误地认为 .NET 框架(作为 WCF 序列化/反序列化过程的一部分)会将其弹出到 UTC 的 .Net 日期时间中(因为上面有 4 小时的负偏移量)
我期待着:2012-03-26 21:03
我的问题是:我需要打电话吗?
var date = fromClientWCFService.BookingDate.ToUniversalTime();
为了得到我期待的 21:03 时间?
如果没有,是否有 WCF 设置告诉我的服务将 DateTimes 转换为 UTC,而不是服务器时区?
提前致谢
Mark
EDIT:
从 1 个答案中,我可以看到可以使用 DateTimeOffset 。在此之后,将进行以下工作:var offset = DateTimeOffset.Parse("2012-03-26T17:03:00-0400");
返回结果:2012-03-26 21:03
而不是使用DateTime结构,你应该使用DateTimeOffset结构.
The DateTimeOffset
结构捕获指定时间的偏移量(默认情况下不是 UTC,它是由范围定义的)your应用程序,但最常见的偏移量是来自 UTC)along带有日期/时间信息,并且该信息将通过 WCF 调用流动(以及数据库,假设它支持该类型。在这种情况下,SQL Server 具有datetimeoffset数据类型从2008年起)。
事实上,using DateTimeOffset是处理日期/时间数据的首选方法all情况。上一个链接的注释:
DateTimeOffset 值的这些用途比那些更常见
对于日期时间值。因此,应考虑 DateTimeOffset
应用程序开发的默认日期和时间类型。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)