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

我的web服务返回一个DateTime到jQuery调用。该服务以以下格式返回数据:

/Date(1245398693390)/

如何将此转换为javascript友好的日期?


当前回答

我用这个方法已经有一段时间了:

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);
  }
}

其他回答

我认为,从1970,1,1的转换需要双舍入到小数点后0位

DateTime d1 = new DateTime(1970, 1, 1);
DateTime d2 = dt.ToUniversalTime();
TimeSpan ts = new TimeSpan(d2.Ticks - d1.Ticks);
return Math.Round( ts.TotalMilliseconds,0);

在客户端我使用

new Date(+data.replace(/\D/g, ''));

返回的是epoch以来的毫秒数。你可以这样做:

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

关于如何精确地按照你想要的格式设置日期,请参阅http://www.w3schools.com/jsref/jsref_obj_date.asp上的完整日期参考

你可以通过解析整数(如这里所建议的)来剥离非数字:

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]));

我用这个方法已经有一段时间了:

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);
  }
}

你可以尝试第三方库,比如json.net,在项目网站上有文档。它说它需要。net 3.5。

还有一种叫做Nii。Json,我相信是从java的一个端口。我在这个博客上找到了一个链接

http://stevenlevithan.com/assets/misc/date.format.js

var date = eval(data.Data.Entity.Slrq.replace(/\/Date\((\d )\)\//gi, "new Date($1)"));  
alert(date.format("yyyy-MM-dd HH:mm:ss"));  
alert(dateFormat(date, "yyyy-MM-dd HH:mm:ss"));