我有一个返回json
的服务:
[
{
"title":"First event",
"startDate":"\/Date(1495512000000-0400)\/",
"endDate":"\/Date(1495857540000-0400)\/",
}
]
相对于我定义的模型,我将json输出反序列化到列表中:
模型
public class EventModel
{
[JsonProperty("title")]
public string Title { get; set; }
[JsonProperty("startDate")]
public DateTime StartDate { get; set; }
[JsonProperty("endDate")]
public DateTime EndDate { get; set; }
}
C#反序列化代码
我使用Newtonsoft.Json
包进行反序列化。
List< EventModel > lstEvent = new List< EventModel >();
lstEvent = JsonConvert.DeserializeObject<List< EventModel >>(await objMyServices.GetData());
所以在这种情况下,当我调试时,我在两个不同的时区得到以下输出:
GMT + 5:30(加尔各答 - 印度):
开始时间:23-05-2017 09:30:00
结束时间:27-05-2017 09:29:00
GMT-4:00(纽约):
开始时间:23-05-2017 00:00:00
结束时间:26-05-2017 23:59:00
因此,对于每个记录,当我切换到GMT-4:00(纽约)时,开始时间不会被分析到相应的系统时区。 我在这里失踪的是什么?
答案 0 :(得分:1)
Json.NET允许您通过DateTimeZoneHandling序列化程序设置指定要返回的DateTime类型(UTC,Local)。默认值为Local。
要返回UTC DateTime,请使用DateTimeZoneHandling.Utc:
var settings = new Newtonsoft.Json.JsonSerializerSettings()
{
DateTimeZoneHandling = DateTimeZoneHandling.Utc
};
var content=await objMyServices.GetData();
var lstEvent = JsonConvert.DeserializeObject<List<EventModel>>(content, settings);
或许更好的选择是将属性类型更改为DateTimeOffset。此类型保留原始偏移量。
答案 1 :(得分:0)
您可以在Web API中使用SELECT id FROM posts WHERE content LIKE '%searchterm%' OR WHERE tags LIKE '%searchterm%' OR WHERE title LIKE '%searchterm%'
。使用多个时区时,这非常方便。参考下面的例子。
Ticks