Pet*_*ner 12 asp.net asp.net-web-api
我知道这个问题已被多次删除,我读了很多关于该哈希的帖子,但仍然感到困惑.
使用MVC4/WebAPI,我有一个日期时间,只是创建为新的DateTime.Now.
我的WebAPI是这样的返回数据:
HttpResponseMessage response = Request.CreateResponse(HttpStatusCode.OK, new
{
data = sessionRecordSmalls,
count = sessionRecordSmalls.Count,
success = true
});
Run Code Online (Sandbox Code Playgroud)
其中sessionRecordsSmall的公共属性为DateTime.
当我在VS调试器中查看日期时,它现在显示为没有时区,因为DateTime不包含时区.
{10/6/2012 9:45:00 AM}
当我查看从服务器下载的内容时,我会在JSON中看到
2012-10-06T09:45:00
我认为T0意味着时区0,而不是100%肯定.我的JavaScript库将其解释为时区0,然后显示下载为GMT的实际日期(-9小时前为我).
我的问题是,JSON下载了什么?这包括时区吗?我在这里错过了一些重要的步骤吗?
ton*_*ral 44
如果使用json.net进行序列化,请记住您可以指定DateTimeZoneHandling.
WebApiConf.cs中的示例
var json = config.Formatters.JsonFormatter;
json.SerializerSettings.DateTimeZoneHandling =Newtonsoft.Json.DateTimeZoneHandling.Local;
Run Code Online (Sandbox Code Playgroud)
Rad*_*ler 14
2012-10-06T09:45:00
我们使用Web API和默认序列化程序在JSON中重现的日期时间是ISO 8601格式.
事实上,这就是所谓的组合日期和时间表示.提取:
..单个时间点可以通过连接完整的日期表达式,字母T作为分隔符和有效的时间表达式来表示.例如"2007-04-05T14:30"......
此格式没有时区信息.如时区指示符 Extract中所述:
ISO 8601中的时区表示为本地时间(未指定位置),UTC或UTC的偏移量.如果没有给出具有时间表示的UTC关系信息,则假定时间是在本地时间.
换句话说,如果没有指定UTC的偏移量,则将其视为本地时间.
该UTC格式将与延长Z
末
如果时间是UTC,则在没有空格的时间之后直接添加Z. Z是零UTC偏移的区域指示符.因此,"09:30 UTC"表示为"09:30Z"或"0930Z"."14:45:15 UTC"将是"14:45:15Z"或"144515Z".
UTC时间也被称为'Zulu'时间,因为'Zulu'是'Z'的北约语音字母词.
所以,我们收到的日期时间是ISO 8601格式,被视为当地时区(最后没有Z
像这样2012-10-06T09:45:00Z
)