我正在使用第三方服务来序列化包含日期时间的对象。某些类中的某些DateTime属性序列化为具有偏移量的字符串,如:
2012-03-22T15:31:18 -05:00
某些类中的某些DateTime属性序列化为没有偏移量的字符串,如:
2012-03-24T00:00:00
我认为该服务期待日期时间偏移。 有什么方法可以强制类序列化日期时间偏移量吗?
答案 0 :(得分:1)
一些带有GMT偏移量的DateTime序列和一些与DateTime的 Kind属性无关的原因
使用DateTime.Now()创建的DateTimes将其Kind属性设置为DateTimeKind.Local 使用DateTime.Parse()创建的DateTimes将其Kind属性设置为DateTimeKind.UnspecifiedToString(“o”)函数可用于序列化为GMT格式。未指定的种类不知道偏移量,因此它被跳过。
未指明种类:2012-03-24T00:00:00 当地种类:2012-03-22T15:31:18 -05:00
有一个名为SpecifyKind的函数,但仅当 NOT 的类型设置为未指定时才有效。
解决方案是使用以下构造函数创建DateTime: DateTime(年,月,日,小时,分钟,秒,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);
}
我希望它可以帮助别人