2012-03-22 45 views
1

我使用的序列化包含日期时间的对象第三方服务。在某些类某些日期时间属性序列与一个字符串象偏移:WCF XMLserialization矛盾与日期时间与格林尼治标准时间偏移

2012-03-22T15:31:18 -05:00

在某些类某些日期时间属性序列化到一个字符串没有偏移,如:

2012-03-24T00:00:00

我认为,服务期待一个日期时间偏移。 有什么办法可以强制类序列化日期时间偏移?

回答

1

的原因,一些日期时间序列与GMT偏移和一些不具有做的Kind属性的日期时间

DateTime是否有DateTime.Now创建()设置其Kind属性为DateTimeKind.Local DateTime是否与DateTime.Parse创建()设置它们的Kind属性作为DateTimeKind.Unspecified

功能的ToString(“O”)可以被用来序列出来GMT格式。未指定类型不知道偏移量,因此它被跳过。

不明种类:2012-03-24T00:00:00 本地类:2012-03-22T15:31:18 -05:00

有一个叫SpecifyKind功能,但只工作,如果那种是不是设置为未指定。

解决方法是使用以下构造函数创建DateTime: DateTime(Year,Month,Day,Hour,Minute,Second,DateTimeKind.Local);

http://msdn.microsoft.com/en-us/library/t882fzc6.aspx

我创建了这个很短的扩展方法:

public static DateTime SpecifyKindLocal(this DateTime datetime) 
    { 
     return new DateTime(datetime.Year, datetime.Month, datetime.Day, datetime.Hour, datetime.Minute, datetime.Second, DateTimeKind.Local); 
    } 

我希望它可以帮助别人

相关问题