【发布时间】:2020-03-16 21:22:47
【问题描述】:
我有一个具有 DateTime 属性的 c# 对象列表,我使用 NewtonSoft 对其进行序列化
result = Newtonsoft.Json.JsonConvert.SerializeObject( PagedZoningCases );
这使得 DateTime 出来为:
CallDateTime: "2017-04-17T17:06:00"
但这在javascript中不好,所以我尝试了以下
result = Newtonsoft.Json.JsonConvert.SerializeObject( PagedZoningCases, new Newtonsoft.Json.Converters.JavaScriptDateTimeConverter);
这更好一点,它会产生以下结果:
CallDateTime: "新日期(1396496760000)"
当我将结果返回到页面并在 javascript 中执行 JSON.parse(result) 时会引发错误
我执行了以下测试以查看 javascript 的预期:
var date = new Date();
console.log(date); //Thu Nov 21 2019 15:29:33 GMT+1300 (New Zealand Daylight Time)
var json = JSON.stringify(date);
console.log(json); //"2019-11-21T02:29:33.392Z"
var date2 = new Date(dateStr);
console.log(date2); //Thu Nov 21 2019 15:29:33 GMT+1300 (New Zealand Daylight Time)
所以 NewtonSoft 的转换器似乎没有将日期转换为正确的值以在 Date() 函数中工作。它给出了过去纪元的毫秒数,但 javascript 并没有预料到这一点。
如何从 c# 序列化 DateTime 并通过 JSON 将其解析为 javascript 日期对象?
【问题讨论】:
-
你能不能像
var date = new Date(Date.parse(myDateString))那样从你的JSON中解析格式化的日期?您列出的第一种格式将正确解析。 -
我正在解析一组对象,而不是一次性日期字符串
-
是的,第一个确实解析但我希望它在集合中为: CallDateTime: new Date(2019-11-21T02:29:33.392Z) 这意味着改变它的序列化方式
-
@Hank,我的回答对您解决问题有帮助吗?如果是,请将其标记为已接受。如果没有,请告诉我,我会尽力提供进一步帮助。
标签: javascript c# json datetime json.net