2017-05-05 74 views
0

我从json API获取时间类似于“DOB”:“/ Date(862588800000 + 0800)/”,但我必须将其转换为类似Date格式的日期:04/28/2017 10:20 :05(MM/dd/yyyy HH:mm:sss)。需要帮助角度2中的日期转换CST

回答

2

您可以先将值解析为Date对象,然后格式化输出。

第一个数字部分看起来是自纪元(1970-01-01)以来的毫秒时间值,后面是HHMM中的时区偏移量。纪元前时间值是负的,所以正则表达式来获得部分可能是:

/[+-]?\d+/g 

应同时匹配的时间价值和偏移。

的时间值可以通过那么这个偏移量用于创建日期调整(传递给Date构造函数值必须是数字,或者如果它是一个字符串,它会被解析):

function parseDate(s) { 
 
    // Get the parts 
 
    var b = s.match(/[+-]?\d+/g); 
 

 
    // If appears invalid, return invalid Date  
 
    if (!b || b.length != 2) return new Date(NaN); 
 
    
 
    // Get sign of offset 
 
    var sign = +b[1] < 0? -1 : 1; 
 

 
    // Convert offset to milliseconds 
 
    // Multiplication converts the strings to numbers so + adds 
 
    var offset = sign * b[1].substr(1,2)*3.6e6 + b[1].substr(3,2)*6e4; 
 

 
    // Adjust time value by offset, create a Date and return it 
 
    // Subtraction also converts the time value to a number 
 
    return new Date(b[0] - offset); 
 
} 
 

 
var s = '/Date(862588800000+0800)/'; 
 

 
console.log(parseDate(s));

验证也可以使用正则表达式,如:

/\(-?\d+[+-]\d{4}\)/.test(s) 

至于格式化日期,疗法e已经有很多问题了,请参阅Where can I find documentation on formatting a date in JavaScript?

+0

真棒男人..非常感谢。你能否在1997年5月2日再做一些改变。目前我收到星期五五月02 1997 13:30:00 GMT + 0530(IST) – Anuj

+0

我做到了。感谢帮助。 – Anuj