【发布时间】:2014-08-03 12:15:32
【问题描述】:
我的 DateTimePicker 绑定到属性:
picker.DataBindings.Add("Value", this, "EventDate");
...
private DateTime eventDate;
public DateTime EventDate
{
get
{
var offset = TimeZoneInfo.Local.GetUtcOffset(eventDate);
string json = JsonConvert.SerializeObject(eventDate, Formatting.Indented);
Console.WriteLine("get: {0} --- {1}", json, offset);
return eventDate;
}
set
{
var offset = TimeZoneInfo.Local.GetUtcOffset(value);
string json = JsonConvert.SerializeObject(value, Formatting.Indented);
Console.WriteLine("set: {0} --- {1}", json, offset);
eventDate = value;
}
}
每当数据绑定设置属性时,我得到以下结果:
set: "2015-08-03T16:06:59" --- 04:00:00
get: "2015-08-03T16:06:59" --- 04:00:00
get/set 中的代码仅用于调试目的。整个类与 EventDate 属性一起序列化。
如何修改 DateTime 变量和/或 json 序列化程序以包含时区偏移,例如:
"2014-08-03T16:06:59.8708232+04:00"
奇怪的是,如果我创建全新的 DateTime 对象并分配给 DateTime.Now 而不绑定,JSON.NET 将为其附加时区偏移量。不知道有什么区别。
【问题讨论】: