js中如何将MM/dd/yyyyHH:mm:sszzz格式的字符串转为date

How to convert string of MM/dd/yyyy HH:mm:ss zzz format to date in js

我想用 moment.js 或任何其他库转换固定格式 MM/dd/yyyy HH:mm:ss zzz 的字符串,稍后再进行比较。我以 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/

Momemnt js不支持ZZZ,只需将这部分从字符串中去掉即可正常使用

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