1

Microsoft ASP.NET MVC 的 JSON 序列化程序将日期时间值转换为类似"\/Date(1239018869048)\/".

我在客户端有一个组件,它使用这种格式来显示日期时间选择器。但是,从不同来源创建日期时间值:

  1. 来自控制器操作返回的 JSON
  2. 来自 Razor 页面中呈现的一些值

第一个源创建所需格式的日期时间,即"\/Date(1239018869048)\/". 但是,第二个源以人类可读的格式呈现日期时间,即7/31/2013 10:03:53 AM.

无论如何在 Razor 页面中创建 JSON 序列化日期格式?

4

2 回答 2

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 视图中使用此格式,最好将代码包装在辅助方法中。

于 2013-07-31T07:33:31.587 回答
0

您需要选择一种标准的日期格式,并拥有一个 JavaScript 库,该库基本上只采用各种日期格式并输出您喜欢的格式。例如,这在您需要使用 jQuery UI 的日期选择器但随后以不同的格式传回所选日期的情况下是相关的。

有几个可用的日期处理库,但我使用MomentJS。这可以接受 /Date(...)/ 格式并返回一个日期对象,但您也可以从特定的字符串格式创建日期对象。您还可以使用它以自定义字符串格式抽出日期

var formattedDate = moment().format("[/Date(]X[)/]");
于 2013-07-31T08:06:41.187 回答