JavaScript 如何确定一个变量是否为日期

发布于 2022-05-19 12:47:38 字数 2594 浏览 1033 评论 0

JavaScript 日期被视为对象。 使用 typeof运算符 将返回 'object',所以你不能使用 typeof 区分一个值是否是一个日期。 你应该使用 instanceof 来判断。

let x = new Date();
if (x instanceof Date) {
  // will execute
}

Object.prototype.toString.call()

更好的选择是使用 Object.prototype.toString.call(variableToCheck) 方法。 它以字符串格式返回对象的内部类属性 '[object Type]',所以日期是 '[object Date]'

let x = new Date();
if (Object.prototype.toString.call(x) === "[object Date]") {
  // will execute
}

Check for validity

现在您知道如何检查变量是否为日期,您需要检查它是否为 有效 日期。 您可以使用 !isNaN() 检查日期是否有效的函数。

let x = new Date("Bad String");
if (x instanceof Date) {
  // executes, because `x` is technically a date object
}
if (x instanceof Date && !isNaN(x)) {
  // will not execute
}

如果 x 是一个日期, isNaN(x) 相当于 Number.isNaN(x.valueOf())。日期有一个 valueOf()函数 返回日期的数字表示,以自 Unix 纪元

// 86400000, or 24 * 60 * 60 * 1000
new Date('1970-01-02T00:00:00.000Z').valueOf();

您可能会看到的另一个常见技巧是使用 > 操作符。 请记住,您可以使用 <>在 JavaScript 如下所示,所以 d > 0 将返回 true 如果 d 是一个带有正数、非 NaN 的日期 valueOf()

const validDate = new Date('2021-01-01');
const zeroDate = new Date(0);
const invalidDate = new Date('fail');

validDate > 0; // true
zeroDate > 0; // false
invalidDate > 0; // false

validDate >= 0; // true
zeroDate >= 0; // true
invalidDate >= 0; // false

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据

关于作者

github_6qvxI3ZRfN

暂无简介

0 文章
0 评论
200 人气
更多

推荐作者

醉城メ夜风

文章 0 评论 0

远昼

文章 0 评论 0

平生欢

文章 0 评论 0

微凉

文章 0 评论 0

Honwey

文章 0 评论 0

qq_ikhFfg

文章 0 评论 0

    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文