Microsoft ASP.NET MVC的JSON序列化程序将日期时间值转换为"\/Date(1239018869048)\/"
。
我在客户端有一个使用此格式的组件来显示日期时间选择器。但是,请从不同来源创建日期时间值:
第一个来源创建所需格式的日期时间,即"\/Date(1239018869048)\/"
。但是,第二个源以人类可读的格式呈现日期时间,即7/31/2013 10:03:53 AM
。
无论如何在Razor页面中创建JSON序列化日期格式?
答案 0 :(得分:2)
JSON没有定义日期格式。但是,客户端组件使用的日期格式很可能是自1970年1月1日00:00:00以来经过的毫秒数。要生成预期的输出,您需要计算经过的毫秒数,并且可以这样做(假设dateTime
包含您要转换的日期):
var epoch = new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc);
var elapsedSinceEpoch = dateTime - epoch;
var formattedDateTime = string.Format(
@"""\/Date({0:F0})\/""",
elapsedSinceEpoch.TotalMilliseconds
);
要在Razor视图中使用此格式,最好将代码包装在辅助方法中。
答案 1 :(得分:0)
您需要选择一个标准的单一日期格式,并且有一个javascript库,它基本上只采用各种日期格式并吐出您的首选格式。例如。这与您需要使用jQuery UI的datepicker但后来以不同格式传回所选日期的情况相关。
有几个日期处理库可用,但我使用MomentJS。这可以accept the /Date(...)/ format and return a date object,但您也可以从特定的字符串格式创建日期对象。您也可以将其用于pump out a date in a custom string format:
var formattedDate = moment().format("[/Date(]X[)/]");