栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

ASP.NET MVC JsonResult日期格式

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

ASP.NET MVC JsonResult日期格式

只是为了扩展casperOne的答案。

JSON规范并不考虑日期值。MS必须打个电话,他们选择的路径是利用字符串的javascript表示形式的一个小技巧:字符串文字“/”与“ /”相同,并且字符串文字 永远不会 序列化为“ /”(即使“ /”也必须映射到“ \ /”)。

JSON的痛处之一是缺少日期/时间文字。许多人在初次遇到JSON时会感到惊讶和失望。对于缺少日期/时间文字的简单解释(是否可以安慰)是Javascript从未使用过:在Javascript中对日期和时间值的支持完全通过Date对象提供。因此,大多数使用JSON作为数据格式的应用程序通常倾向于使用字符串或数字来表示日期和时间值。如果使用字符串,通常可以期望它采用ISO
8601格式。如果改用数字,则该值通常是指自纪元以来的世界标准时间(UTC)的毫秒数,其中纪元定义为1970年1月1日午夜(UTC)。再次,这仅是约定,并非JSON标准的一部分。如果要与另一个应用程序交换数据,则需要检查其文档以查看其如何在JSON文字中编码日期和时间值。例如,Microsoft的ASP.NET
AJAX都不使用所描述的约定。而是将.NET DateTime值编码为JSON字符串,其中字符串的内容为/
Date(ticks)/,而ticks表示自历元(UTC)以来的毫秒数。因此,1989年11月29日上午4:55:30,以UTC编码为“ /
Date(628318530718) /”。NET AJAX均不使用所描述的约定。而是将.NET
DateTime值编码为JSON字符串,其中字符串的内容为/
Date(ticks)/,而ticks表示自历元(UTC)以来的毫秒数。因此,1989年11月29日上午4:55:30,以UTC编码为“ /
Date(628318530718) /”。NET AJAX均不使用所描述的约定。而是将.NET
DateTime值编码为JSON字符串,其中字符串的内容为/
Date(ticks)/,而ticks表示自历元(UTC)以来的毫秒数。因此,1989年11月29日上午4:55:30,以UTC编码为“ /
Date(628318530718) /”。


一个解决方案是将其解析出来:

value = new Date(parseInt(value.replace("/Date(", "").replace(")/",""), 10));

但是,我听说有一个设置可以让序列化程序

DateTime
使用
new Date(xxx)
语法输出对象。我会尝试将其挖掘出来。


的第二个参数

JSON.parse()
接受一个
reviver
函数,该函数规定在返回之前原始值是如何产生的。

这是日期的示例:

var parsed = JSON.parse(data, function(key, value) {  if (typeof value === 'string') {    var d = //Date((d*))//.exec(value);    return (d) ? new Date(+d[1]) : value;  }  return value;});


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/420535.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号