首页 > 解决方案 > 如何在js中将MM/dd/yyyy HH:mm:ss zzz格式的字符串转换为日期

问题描述

我想MM/dd/yyyy HH:mm:ss zzz用 moment.js 或任何其他库转换固定格式的字符串,然后再进行比较。我以 moment.js 为例,但zzz即使我删除模式,它似乎也无法识别模式,对话isAfter看起来也不正确。

var x = moment('12/30/2014 16:26:31 MSK', "MM/dd/yyyy HH:mm:ss zzz");
var y = moment('12/31/2014 06:46:23 MSK', "MM/dd/yyyy HH:mm:ss zzz");

console.log(x.isValid()); // false
console.log(y.isValid()); // false
console.log(x.isAfter(y)); // false
console.log(x.isBefore(y)); // false
console.log(x.isSame(y)); // false
  
var xWithoutZZZ = moment('12/30/2014 16:26:31', "MM/dd/yyyy HH:mm:ss");
var yWithoutZZZ = moment('12/31/2014 06:46:23', "MM/dd/yyyy HH:mm:ss");
  
console.log(xWithoutZZZ.isValid()); // true
console.log(yWithoutZZZ.isValid()); // true
console.log(xWithoutZZZ.isAfter(yWithoutZZZ)); // true ???? WTF WHY
console.log(xWithoutZZZ.isBefore(yWithoutZZZ)); // false
console.log(xWithoutZZZ.isSame(yWithoutZZZ)); // false

请告知解决此问题的方法https://jsfiddle.net/yjqsb754/

标签: javascriptmomentjs

解决方案


Momemnt js不支持ZZZ,直接把这部分从字符串中去掉就可以正常使用了

var x = moment(x.substring(0, x.lastIndexOf(' '));
var y = moment(y.substring(0, y.lastIndexOf(' '));

推荐阅读