无法处理日期 - 时刻

时间:2015-10-26 20:58:33

标签: javascript node.js date momentjs

moment('Sat Sep 12 2015 15:00:00 GMT+0100 (GMT Daylight Time)').format()
// Error: core-test.js:52920 Uncaught Error: input not handled by moment(…)

我很不高兴为什么时刻无法处理这个日期,即使剥离它我仍然无法解决这个问题。

var date = 'Sat Sep 12 2015 15:00:00 GMT+0100 (GMT Daylight Time)'.split(' GMT')[0];
moment(date).format()
//The same error

2 个答案:

答案 0 :(得分:1)

您可以提供if((navigator.userAgent.match(/iPhone/i)) || (navigator.userAgent.match(/iPod/i)) || (navigator.userAgent.match(/iPad/i))) { window.location="DEEPLINKURL"; }else{ window.location="LINKURL"; }用于解析字符串的格式:http://momentjs.com/docs/#/parsing/string-format/

但是您的日期格式无法使用可用选项,因此您必须删除部分信息。即引用偏移“GMT”和“GMT日光时间”的时区名称。由于时区是在“+0100”部分编码的,我将假设删除这些引用是可以的。

首先创建一个“清理”字符串日期的函数:

moment

如果在您提供的字符串function cleanDateString(formattedDate) { return formattedDate.replace(/(.*?)(\w{3})(((\+|-)\d{4}).*)/g,"$1$4"); } 上调用该函数,则输出将为

  

“星期六2015年9月12日15:00:00 +0100”

现在可以使用正确的格式解析这一点。

如果查看http://momentjs.com/docs/#/displaying/format/,则此字符串所需的格式为

  

'ddd MMM DD YYYY mm:hh:ss ZZ'

如果你把上面的两件事情结合起来,那么你可以像这样得到你的日期

cleanDateString('Sat Sep 12 2015 15:00:00 GMT+0100 (GMT Daylight Time)')

这将适用于您的给定字符串

function parseCustomDate(formattedDate) {
  return moment(cleanDateString(formattedDate),'ddd MMM DD YYYY mm:hh:ss ZZ');
}

关于正则表达式的注释

如果您想详细了解正则表达式的工作原理,可以在此链接查看“说明”和“匹配信息”部分:https://regex101.com/r/tH6hM9/1。我用它来调整分组和规则

答案 1 :(得分:-1)

您的日期格式应如this

var date2 = '2015-09-12T15:00:00+00:00'; // UTC