Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.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/4/matlab/15.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 检查是否已使用“时刻”解析日期_Javascript_Date_Momentjs_Moment Timezone - Fatal编程技术网

Javascript 检查是否已使用“时刻”解析日期

Javascript 检查是否已使用“时刻”解析日期,javascript,date,momentjs,moment-timezone,Javascript,Date,Momentjs,Moment Timezone,我正在传递一个日期字符串,该字符串需要使用moment进行适当的解析。问题是在某些情况下,它会被解析两次,这会导致它变成未定义的 这就是代码当前的样子: moment.tz(dt, 'MMMM D, YYYY', timezone).toDate() 当我第二次解析它时,我得到: 力矩无效(/*2018-09-21T05:00:00.000Z*/) 这会导致当我执行toDate()时变成未定义的 第一次我会得到我所期望的: “2019-02-01T05:00:00.000Z” 在进行任何操作之

我正在传递一个日期字符串,该字符串需要使用
moment
进行适当的解析。问题是在某些情况下,它会被解析两次,这会导致它变成
未定义的

这就是代码当前的样子:

moment.tz(dt, 'MMMM D, YYYY', timezone).toDate()
当我第二次解析它时,我得到:

力矩无效(/*2018-09-21T05:00:00.000Z*/)

这会导致当我执行
toDate()
时变成
未定义的

第一次我会得到我所期望的:

“2019-02-01T05:00:00.000Z”


在进行任何操作之前,我想检查它是否已经按照我期望的格式。如何执行此操作?

在调用
toDate()
之前,您可以使用此方法检查解析是否有效。演示:

var timezone=“美国/洛杉矶”;
var dt=‘2018年9月21日’;
var m=时刻tz(dt,'MMMM D,YYYY',时区);
var converted=m.toDate().toString();
console.log(已转换);
var x=矩.tz(换算为“毫米日,年”,时区);
log(x.isValid());
//如果解析成功,请使用新值
如果(x.isValid()){
console.log(x.toDate());
}
//如果不是,假设它已经是正确的格式,就使用它
其他的
{
console.log(已转换);
}


为什么要对其进行两次分析?这听起来有点像逻辑上的缺陷。没有更好的方法通过改变代码流来防止这种情况发生吗?这与数据转换有关。有时我将其转换为json,有时从json转换为csv,有时直接转换为csv。这就是为什么我需要知道如何检查数据是否已经是我期望的格式,这将是我对逻辑缺陷的补救措施。而不是在解析日期之前检查变量的类型(我相信这将是你在寻找这个问题的答案),我会尝试理解为什么在不需要函数的时候调用它,然后修复它。我猜您在更改数据格式的同时更改了日期字符串(即,在从JSON更改为CSV或其他格式的同时执行此操作)。也许你可以把这两个过程分开,我不知道,我没有足够的信息来做出判断。但是如果没有更好的选择,您可以在调用
toDate()
之前使用该方法检查解析是否有效,也许您应该向我们展示更多的代码。