Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/397.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/42.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 无法处理js日期-时刻_Javascript_Node.js_Date_Momentjs - Fatal编程技术网

Javascript 无法处理js日期-时刻

Javascript 无法处理js日期-时刻,javascript,node.js,date,momentjs,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(…) 您的日期格式应如下所示: 您可以提供用于分析字符串的格式: 但是你的日期格式不可能有可用的选项,所以你必须去掉一些信息。

我很恼火,为什么“时刻”无法处理这个日期,即使把它拆开,我仍然无法把它计算出来

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(…)

您的日期格式应如下所示:

您可以提供用于分析字符串的格式:

但是你的日期格式不可能有可用的选项,所以你必须去掉一些信息。即偏移GMT和GMT夏令时的参考时区名称。因为时区是在+0100部分编码的,所以我假设删除这些引用是可以的

首先创建一个函数来清除字符串日期:

var date2 = '2015-09-12T15:00:00+00:00'; // UTC 
如果对提供的cleanDateString“Sat Sep 12 2015 15:00:00 GMT+0100 GMT夏令时”字符串调用函数,则输出将为

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

现在,这是可以使用正确的格式按时刻解析的内容

如果您看一下,那么这个字符串需要的格式是

“ddd-MMM-DD-YYYY-mm:hh:ss-ZZ”

如果你把上面的两件事结合起来,你就能得到这样的约会

function cleanDateString(formattedDate) {
  return formattedDate.replace(/(.*?)(\w{3})(((\+|-)\d{4}).*)/g,"$1$4");
}
这将适用于给定的字符串

function parseCustomDate(formattedDate) {
  return moment(cleanDateString(formattedDate),'ddd MMM DD YYYY mm:hh:ss ZZ');
}
关于正则表达式的注释
如果您想了解正则表达式的具体工作方式,可以查看以下链接中的解释和匹配信息部分:。我用它来调整分组和规则

你能设置一把小提琴吗?从一开始,尽管它看起来不允许你在矩函数中输入的格式。-将向您展示顶部允许的内容。这是我最初的印象。我刚刚用moment 2.10.6试用了你的第一个例子,它有一个反对的警告,但有效,你的第二个例子也有效,没有反对的警告。我不知道为什么有人在没有解释的情况下投了反对票。
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)')