将 .NET DateTime 转换为 JSON

2022-08-30 00:41:27

可能的重复:
如何格式化JSON日期?

我的 Web 服务正在将 DateTime 返回到 jQuery 调用。该服务按以下格式返回数据:

/Date(1245398693390)/

如何将其转换为对 JavaScript 友好的日期?


答案 1

返回的是自 epoch 以来的毫秒。你可以做:

var d = new Date();
d.setTime(1245398693390);
document.write(d);

有关如何完全按照所需的格式设置日期,请参阅 http://www.w3schools.com/jsref/jsref_obj_date.aspDate

您可以通过解析整数来去除非数字(如此处所示):

var date = new Date(parseInt(jsonDate.substr(6)));

或者应用以下正则表达式(来自注释中的 Tominator):

var jsonDate = jqueryCall();  // returns "/Date(1245398693390)/"; 
var re = /-?\d+/; 
var m = re.exec(jsonDate); 
var d = new Date(parseInt(m[0]));

答案 2

我已经使用这种方法一段时间了:

using System;

public static class ExtensionMethods {
  // returns the number of milliseconds since Jan 1, 1970 (useful for converting C# dates to JS dates)
  public static double UnixTicks(this DateTime dt)
  {
    DateTime d1 = new DateTime(1970, 1, 1);
    DateTime d2 = dt.ToUniversalTime();
    TimeSpan ts = new TimeSpan(d2.Ticks - d1.Ticks);
    return ts.TotalMilliseconds;
  }
}

假设您是针对 .NET 3.5 进行开发的,则它是直接复制/粘贴。否则,您可以移植它。

您可以将其封装在 JSON 对象中,也可以直接将其写入响应流。

在 Javascript/JSON 方面,只需将刻度传递到新的 Date 对象中,即可将其转换为日期:

jQuery.ajax({
  ...
  success: function(msg) {
    var d = new Date(msg);
  }
}