javascript - 解析日期 YYYYMMDD'T'HHmmss.sss'Z'

标签 javascript date

假设我从 api 收到一个日期,格式为: 20191116T202021.000Z

但不幸的是我无法在 JavaScript 中解析这些数据:

  var dateToParse = "20191116T202021.000Z"
  var dateFormat = "YYYYMMDD'T'HHmmss.sss'Z'"

  var test = Date.parse(dateToParse, dateFormat)
  console.log(test)

我想要实现的是用这个 dateToParse 日期减去当前日期,并查看秒、分钟和天的差异。

最佳答案

Date.parse 没有第二个参数支持。相反,通过插入缺少的分隔符将输入字符串转换为 ISO 格式:

var dateToParse = "20191116T202021.000Z";

var test = Date.parse(dateToParse.replace(/(....)(..)(..T..)(..)/, "$1-$2-$3:$4:")); 
console.log(test); // output as milliseconds
console.log(new Date(test).toJSON()); // output also in JSON format

如下所述,上面的正则表达式已经完成了将字符串解析为其日期部分的工作,因此您不妨将这些部分传递给 Date.UTC 而无需构建另一个需要解析的字符串再次。它只需要对月份数字进行一点调整:

var dateToParse = "20191116T202021.000Z";

var parts = dateToParse.match(/(....)(..)(..)T(..)(..)(..)\.(...)Z/);
var test = Date.UTC(parts[1], parts[2]-1, parts[3], parts[4], parts[5], parts[6], parts[7]); 
console.log(test); // output as milliseconds
console.log(new Date(test).toJSON()); // output also in JSON format

为了提高效率,您只需将字符串切成固定大小的片段,而不使用花哨的正则表达式:

var dateToParse = "20191116T202021.000Z";

var test = Date.UTC(dateToParse.slice(0,4), 
                    dateToParse.slice(4,6)-1,
                    dateToParse.slice(6,8),
                    dateToParse.slice(9,11), 
                    dateToParse.slice(11,13),
                    dateToParse.slice(13,15),
                    dateToParse.slice(16,19));

console.log(test); // output as milliseconds
console.log(new Date(test).toJSON()); // output also in JSON format

关于javascript - 解析日期 YYYYMMDD'T'HHmmss.sss'Z',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58899791/

相关文章:

javascript - jQuery .toggle() 子问题

javascript - 如何为同一个弹出窗口调用 Controller ?

javascript - 在 photoshop 中比较像素值

javascript - 动态改变文本框的值

ios - 使用 Google OAuth API 检索出生日期

java - 如何通过给出月份中的星期和星期几来获取日期

javascript - 如何填充第一个日期和最后一个日期之间的日期?

linux - with date,当指定日期包含时/分/秒时,如何指定相对日期

javascript - each、ajax、promise 并以正确的方式设置 html

java - 处理日期 java.util、日期 java.sql 和 SimpleDateFormat