ASP.NET函数Json()
格式化并返回日期
{"d":"\/Date(1240718400000)\/"}
必须在客户端处理,这是有问题的。您对来回发送日期值的方法有何建议?
答案 0 :(得分:29)
这是在Stack Overflow上的another post中找到的:
var date = new Date(parseInt(jsonDate.substr(6)));
substr函数取出“/ Date(”部分,并且parseInt函数获取整数并忽略最后的“)/”。结果数字传递给Date构造函数。
答案 1 :(得分:11)
如果您没有绑定到MS JSON序列化程序,则可以使用Json.NET。它附带了一个IsoDateTimeConverter来处理序列化日期的问题。这会将日期序列化为ISO 8601格式化的字符串。
例如,在我们的项目中,序列化myObject
通过以下代码处理。
JsonNetResult jsonNetResult = new JsonNetResult();
jsonNetResult.Formatting = Formatting.Indented;
jsonNetResult.SerializerSettings.Converters.Add(new IsoDateTimeConverter());
jsonNetResult.Data = myObject;
如果你决定采用Json.NET,你还需要抓取JsonNetResult,因为它返回一个可以在ASP.NET MVC应用程序中使用的ActionResult。这很容易使用。
有关详细信息,请参阅:Good (Date)Times with Json.NET
答案 2 :(得分:6)
它可能很丑,但它确实有效:
var epoch = (new RegExp('/Date\\((-?[0-9]+)\\)/')).exec(d);
$("#field").text((new Date(parseInt(epoch[1]))).toDateString());
可能没有必要匹配整个字符串,只是( - ?[0-9] +)就够了......
答案 3 :(得分:5)
并非所有人都认同这是一个好主意,但我发现自己最常返回格式化的字符串而不是正确的日期。请参阅 How I handle JSON dates returned by ASP.NET AJAX 。
答案 4 :(得分:1)
在玩Json.NET库之后,我想知道为什么你会选择在JavascriptDateTimeConverter上使用IsoDateTimeConverter。
我发现在从MVC控制器序列化日期时,我更容易使用我使用的Ext JS接口。
JsonNetResult jsonNetResult = new JsonNetResult();
jsonNetResult.Formatting = Formatting.Indented;
jsonNetResult.SerializerSettings.Converters.Add(new JavaScriptDateTimeConverter());
jsonNetResult.Data = myObject;
我将这些数据放回Ext.data.JsonStore,它能够将返回的值作为日期获取,而不必指定要解析的日期格式。
store:new Ext.data.JsonStore({
url: pathContext + '/Subject.mvc/Notices',
baseParams: { subjectId: this.subjectId },
fields: [
{name: 'Title'},
{name: 'DateCreated', type: 'date' }
]
}),
返回的JSON如下所示:
[{"Title":"Some title","DateCreated":new Date(1259175818323)}]
没有任何理由转换为ISO 8601格式,如果不需要,则返回。
答案 5 :(得分:1)
在客户端自动转换日期(如果使用jQuery)
-
您没有指定它,但由于您使用的是ASP.NET MVC,因此您可能正在使用jQuery。如果您这样做,如果您使用this blog post上提供的代码,转换为实际日期会变得更简单。该代码扩展了jQuery的$.parseJSON()
功能,因此它自动将ISO和ASP.NET日期字符串转换为实际的JavaScript日期。
我在ASP.NET MVC中使用它,它就像一个魅力。最好的部分是它也向后兼容。使用$.parseJSON()
的现有代码将像以前一样工作(并且实际上工作相同),但如果您提供第二个参数并将其值设置为true
,则所有日期将自动转换为您。< / p>
扩展程序在适用的情况下使用本机浏览器JSON支持,也适用于其他不支持的扩展程序。现代浏览器无论如何都支持此功能。
答案 6 :(得分:0)
查看博客帖子 jQuery, Ajax, ASP.NET and dates 。
详细介绍了如何使用ASP.NET MVC和jQuery在服务器端和客户端之间通过JSON传递日期。