Javascript 时间戳错误处理

Javascript 时间戳错误处理,javascript,node.js,Javascript,Node.js,它将日期转换为时间戳: let Record1 = { SubmitDate: "2012-03-24 17:45:12" } try { timestamp = parseInt((new Date(Record1.SubmitDate).getTime() / 1000).toFixed(0)); } catch(err) { timestamp = null; } console.log(timestamp) 返回:1332611112 如果SubmitDate为null或S

它将日期转换为时间戳:

let Record1 = { SubmitDate: "2012-03-24 17:45:12" }

try {
  timestamp = parseInt((new Date(Record1.SubmitDate).getTime() / 1000).toFixed(0));
} catch(err) {
  timestamp = null;
}

console.log(timestamp)
返回:1332611112

如果
SubmitDate
为null或
SubmitDate
属性不存在,则应返回null。出于某种原因,它不会执行到catch块中

范例

let Record2 = { SubmitDate: null } 
let Record3 = { } 
我希望它们都返回null。时间戳应有效,否则返回null


如何解决此问题?

当使用未定义或空参数调用
新日期时,不会引发错误:

console.log(新日期(未定义).getTime());

log(新日期(null).getTime())当使用未定义或空参数调用
新日期时,不会引发错误:

console.log(新日期(未定义).getTime());
log(新日期(null).getTime())请记住

parseInt((新日期(null).getTime()/1000.toFixed(0))

将返回
0

但是

parseInt((新日期(未定义).getTime()/1000.toFixed(0))

将返回
NaN

不管怎样,
|
将查找布尔值,并强制转换为0,“NaN”将为false,因此

var timestamp = parseInt((new Date(record.SubmitDate).getTime()/1000).toFixed(0)) || null;
即使在时间戳不正确的情况下,也会为您提供此技巧,如示例
2018-22-22 44:88

请记住

parseInt((新日期(null).getTime()/1000.toFixed(0))

将返回
0

但是

parseInt((新日期(未定义).getTime()/1000.toFixed(0))

将返回
NaN

不管怎样,
|
将查找布尔值,并强制转换为0,“NaN”将为false,因此

var timestamp = parseInt((new Date(record.SubmitDate).getTime()/1000).toFixed(0)) || null;

即使在时间戳不正确的情况下,也会为您提供此技巧,例如
2018-22-22 44:88

这似乎很有效。为什么
console.log(getTimestamp({SubmitDate:“abc”}))
返回到NaN而不是null?是的,请参见编辑-无论它是
NaN
还是
0
,使用它调用
parseInt
将导致0(并且没有错误),这是我在调用
console.log(getTimestamp({SubmitDate:'abc})时的意思它应该返回null而不是NaN。您可以修复getTimestamp函数吗?哦,我明白了-您还需要处理无效的日期字符串,而不仅仅是
null
未定义的日期字符串。构造date对象,并检查结果时间戳是否为0或
NaN
:这似乎很有效。为什么
console.log(getTimestamp({SubmitDate:“abc”}))
返回到NaN而不是null?是的,请参见编辑-无论它是
NaN
还是
0
,使用它调用
parseInt
将导致0(并且没有错误),这是我在调用
console.log(getTimestamp({SubmitDate:'abc})时的意思它应该返回null而不是NaN。您可以修复getTimestamp函数吗?哦,我明白了-您还需要处理无效的日期字符串,而不仅仅是
null
未定义的日期字符串。构造date对象,并检查生成的时间戳是0还是
NaN