“使用DateTimeOffset
”通常是个好建议,但问题的一部分,可以是当类是自动生成从WSDL(或者使用WCF或的.asmx),该xs:DateTime
类型XSD获得创建为DateTime
对象。所以 - 不能。
不幸的是,这没有好的解决方案。如果你真的试图在你的模型中使用DateTimeOffset
,那么WSDL会得到一个奇怪的复杂对象。如果您尝试更改接收端,则无法将xs:DateTime
反序列化为DateTimeOffset
。
这是WCF,SOAP和XSD的弱点。阅读更多WCF DateTimeOffset compatibility。
填充数据时唯一的解决方法是将DateTime
字段显式设置为本地或UTC类型。您可以使用DateTime.SpecifyKind
或任何转换函数,例如ToLocalTime
,ToUniversalTime
或来自TimeZoneInfo
的类似方法。如果您决定使用本地时间,请谨慎小心,因为从服务器获取时区通常不是一个好主意。按照世界时间来传输是最好的。
如果您只是填写当前时间,然后使用DateTime.UtcNow
。如果您正在从数据库中加载基于UTC的DateTime
,则使用DateTime.SpecifyKind
和DateTimeKind.Utc
。如果您已有DateTimeOffset
,则可以使用.UtcDateTime
属性将其分配给模型中的DateTime
值。
如果DateTimeOffset
得到正确支持,那么偏移量可以是任意的。但由于它不是 - 你只能用DateTimeKind
来表达你的想法。
请参阅'DateTimeOffset'。 – Mitch
https://msdn.microsoft.com/en-us/library/system.datetimeoffset(v=vs.110).aspx –
或者尝试将'DateTime'的种类设置为本地 – AlexDev