可能的重复: 如何格式化JSON日期?
我的web服务返回一个DateTime到jQuery调用。该服务以以下格式返回数据:
/Date(1245398693390)/
如何将此转换为javascript友好的日期?
可能的重复: 如何格式化JSON日期?
我的web服务返回一个DateTime到jQuery调用。该服务以以下格式返回数据:
/Date(1245398693390)/
如何将此转换为javascript友好的日期?
当前回答
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"));
其他回答
如果你在获取时间信息上有困难,你可以尝试这样做:
d.date = d.date.replace('/Date(', '');
d.date = d.date.replace(')/', '');
var expDate = new Date(parseInt(d.date));
我想加上我一直在用的解决方案。
如果你使用System.Web.Script.Serialization.JavaScriptSerializer(),那么返回的时间不会特定于你的时区。要解决这个问题,您还需要使用dte.getTimezoneOffset()将其返回到正确的时间。
String.prototype.toDateFromAspNet = function() {
var dte = eval("new " + this.replace(/\//g, '') + ";");
dte.setMinutes(dte.getMinutes() - dte.getTimezoneOffset());
return dte;
}
现在你打电话就行了
"/Date(1245398693390)/".toDateFromAspNet();
2009年6月19日星期五00:04:53 GMT-0400(东部夏令时){}
返回的是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]));
前面的答案都表明你可以做以下事情:
var d = eval(net_datetime.slice(1, -1));
然而,这在Chrome或FF中都不起作用,因为得到的评估字面上是:
// returns the current timestamp instead of the specified epoch timestamp
var d = Date([epoch timestamp]);
正确的做法是:
var d = eval("new " + net_datetime.slice(1, -1)); // which parses to
var d = new Date([epoch timestamp]);
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"));