gpt4 book ai didi

javascript - 时间戳错误处理

转载 作者:行者123 更新时间:2023-12-01 01:54:11 27 4
gpt4 key购买 nike

它将日期转换为时间戳:

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 block 中?

示例

let Record2 = { SubmitDate: null } 
let Record3 = { }

我希望它们都返回 null。时间戳应该有效,否则返回 null。

如何解决这个问题?

最佳答案

当使用未定义或 null 参数调用 new Date 时,它不会抛出错误:

console.log(new Date(undefined).getTime());
console.log(new Date(null).getTime());

然后,使用 NaN0 调用 parseInt 会得到 0。

即使您可以使用try/catchtry/catch语句有点昂贵:它们需要展开整个调用堆栈。只需使用条件运算符即可。也不需要 parseInt,因为您已经在使用 toFixed(0):

const getTimestamp = record => {
const timestamp = new Date(record.SubmitDate).getTime();
if (timestamp == 0 || Number.isNaN(timestamp)) return null;
return (timestamp / 1000).toFixed(0);
};

console.log(getTimestamp({}));
console.log(getTimestamp({ SubmitDate: null }));
console.log(getTimestamp({ SubmitDate: "2012-03-24 17:45:12" }));
console.log(getTimestamp({ SubmitDate: "foo" }));

关于javascript - 时间戳错误处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51163808/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com