无法处理 js 日期 - Moment
Unable to Handle js date - Moment
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(…)
我很生气为什么 moment 无法处理这个日期,即使将它剥离我仍然无法解决它。
var date = 'Sat Sep 12 2015 15:00:00 GMT+0100 (GMT Daylight Time)'.split(' GMT')[0];
moment(date).format()
//The same error
您的日期格式应如下所示 this:
var date2 = '2015-09-12T15:00:00+00:00'; // UTC
您可以提供 moment
用于解析字符串的格式:http://momentjs.com/docs/#/parsing/string-format/
但是您的日期格式无法使用可用的选项,因此您必须删除一些信息。即参考偏移量“GMT”和“GMT 夏令时”的时区名称。由于时区是在“+0100”部分编码的,因此我假设删除这些引用没有问题。
首先创建一个函数来“清理”字符串日期:
function cleanDateString(formattedDate) {
return formattedDate.replace(/(.*?)(\w{3})(((\+|-)\d{4}).*)/g,"");
}
如果您对您提供的字符串调用该函数 cleanDateString('Sat Sep 12 2015 15:00:00 GMT+0100 (GMT Daylight Time)')
,输出将为
"Sat Sep 12 2015 15:00:00 +0100"
现在可以使用正确的格式即时解析这些内容。
如果您查看 http://momentjs.com/docs/#/displaying/format/,那么此字符串所需的格式为
'ddd MMM DD YYYY mm:hh:ss ZZ'
如果你结合上面的两件事,那么你可以得到这样的日期
function parseCustomDate(formattedDate) {
return moment(cleanDateString(formattedDate),'ddd MMM DD YYYY mm:hh:ss ZZ');
}
这将适用于您给定的字符串
parseCustomDate('Sat Sep 12 2015 15:00:00 GMT+0100 (GMT Daylight Time)')
正则表达式注意事项
如果您想详细了解正则表达式的工作原理,可以查看 link:https://regex101.com/r/tH6hM9/1 中的“说明”和“匹配信息”部分。我用它来调整分组和规则
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(…)
我很生气为什么 moment 无法处理这个日期,即使将它剥离我仍然无法解决它。
var date = 'Sat Sep 12 2015 15:00:00 GMT+0100 (GMT Daylight Time)'.split(' GMT')[0];
moment(date).format()
//The same error
您的日期格式应如下所示 this:
var date2 = '2015-09-12T15:00:00+00:00'; // UTC
您可以提供 moment
用于解析字符串的格式:http://momentjs.com/docs/#/parsing/string-format/
但是您的日期格式无法使用可用的选项,因此您必须删除一些信息。即参考偏移量“GMT”和“GMT 夏令时”的时区名称。由于时区是在“+0100”部分编码的,因此我假设删除这些引用没有问题。
首先创建一个函数来“清理”字符串日期:
function cleanDateString(formattedDate) {
return formattedDate.replace(/(.*?)(\w{3})(((\+|-)\d{4}).*)/g,"");
}
如果您对您提供的字符串调用该函数 cleanDateString('Sat Sep 12 2015 15:00:00 GMT+0100 (GMT Daylight Time)')
,输出将为
"Sat Sep 12 2015 15:00:00 +0100"
现在可以使用正确的格式即时解析这些内容。
如果您查看 http://momentjs.com/docs/#/displaying/format/,那么此字符串所需的格式为
'ddd MMM DD YYYY mm:hh:ss ZZ'
如果你结合上面的两件事,那么你可以得到这样的日期
function parseCustomDate(formattedDate) {
return moment(cleanDateString(formattedDate),'ddd MMM DD YYYY mm:hh:ss ZZ');
}
这将适用于您给定的字符串
parseCustomDate('Sat Sep 12 2015 15:00:00 GMT+0100 (GMT Daylight Time)')
正则表达式注意事项
如果您想详细了解正则表达式的工作原理,可以查看 link:https://regex101.com/r/tH6hM9/1 中的“说明”和“匹配信息”部分。我用它来调整分组和规则