我有一个 WCF 服务,可以为我的 javascript 提供一些日期。我想操纵日期,但它到达 javascript 看起来像这样:
/Date(1361145600000+0000)/
我知道这是自 1970 年 1 月 1 日以来的毫秒数,但我一直无法弄清楚如何将其转换为 javascript 日期。
我是否需要使用正则表达式或 trim 文本来提取毫秒数,然后像这样使用它:
new Date(miliseconds)
肯定有更简单的方法吗?
最佳答案
如果“+0000”是标准时区偏移量,则前 2 位数字是小时,后两位数字是分钟。
大概它并不总是'0000'-
您需要将与 UTC 的毫秒差添加(或减去)到第一个整数部分以返回正确的日期。
function timeconvert(ds){
var D, dtime, T, tz, off,
dobj= ds.match(/(\d+)|([+-])|(\d{4})/g);
T= parseInt(dobj[0]);
tz= dobj[1];
off= dobj[2];
if(off){
off= (parseInt(off.substring(0, 2), 10)*3600000)+
(parseInt(off.substring(2), 10)*60000);
if(tz== '-') off*= -1;
}
else off= 0;
return new Date(T+= off).toUTCString();
}
timeconvert('Date(1361145600000)+0000');
//返回值:(字符串UTC)
2013 年 2 月 18 日星期一 00:00:00 GMT
如果日期ARE 始终为 UTC('+0000'),您只需从字符串中提取有效数字-
function timeconvert(ds){
var d=ds.match(/(\d+)/)[1];
return new Date(+d).toUTCString();
}
timeconvert('Date(1361145600000)+0000)');
// returned value: (String UTC)
Mon, 18 Feb 2013 00:00:00 GMT
关于javascript - 将 .NET 日期时间转换为 Javascript 日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14859176/