javascript日期和JSON日期时间
问题描述:
我有一个jQuery函数的getJSON一个问题,操作URL不会触发因为我传递的参数之一是一个JavaScript日期,但该行动预计C#的DateTime ..javascript日期和JSON日期时间
是否有可能格式化Javascript日期以使它与c#DateTime兼容?
答
使用此功能从Mozilla Date documentation采取:
/* use a function for the exact format desired... */
function ISODateString(d){
function pad(n){return n<10 ? '0'+n : n}
return d.getUTCFullYear()+'-'
+ pad(d.getUTCMonth()+1)+'-'
+ pad(d.getUTCDate())+'T'
+ pad(d.getUTCHours())+':'
+ pad(d.getUTCMinutes())+':'
+ pad(d.getUTCSeconds())+'Z'
}
.NET不会有任何问题处理一个ISO格式的日期。您可以使用DateTime.Parse(...)
来处理ISO格式的字符串。
答
如果你想一个解决方案来从JSON表示一个Javascript日期(/日期(1350035703817)/),你可以使用this function:
function parseJsonDate(jsonDate) {
var offset = new Date().getTimezoneOffset() * 60000;
var parts = /\/Date\((-?\d+)([+-]\d{2})?(\d{2})?.*/.exec(jsonDate);
if (parts[2] == undefined)
parts[2] = 0;
if (parts[3] == undefined)
parts[3] = 0;
return new Date(+parts[1] + offset + parts[2]*3600000 + parts[3]*60000);
};
为我工作一样的魅力。
答
我用这个函数比上面的要短。
function ParseJsonDate(dateString) {
var milli = dateString.replace(/\/Date\((-?\d+)\)\//, '$1');
var date = new Date(parseInt(milli));
return date;
}
还发现,将它们转换回来的方法:
function ToJsonDate(date) {
return '\/Date(' + date.getTime() + ')\/';
}
这似乎并不关心这个,有时追加到JSON日期时区信息。 – crush 2013-03-11 15:51:59