js 如何知道今天的日期是否是2020-07-05或已经超过这个日期了

在这里先感谢各位大哥大姐抽空来回答我的问题!

let time = '2020-07-05'

我该怎么知道今天的日期已经超过2020-07-05或者今天就是2020-07-05,如果已经超过了或今天就是这个日期返回true,没有就返回false

阅读 3.3k
6 个回答
/**
 * @function timeCompare - 将日期字符串与当前日期进行比较
 * @returns {Number} - true - 今天及以后, false - 今天以前
 */
const timeCompare = time => {
    // 今天 0 时的时间戳
    const momentOfToday = (
        new Date(
            (
                new Date()
            ).toLocaleDateString())
        ).valueOf();
    
    // 传入的日期的时间戳
    const momentOfTime = (
        new Date(
            // replace 仅仅是为了去除月份前的 '0'
            // 应该有更好的方法去掉
            time.replace(
                /(\d{4}).+(\d{2}).+(\d{2})/,
                ($0, $1, $2, $3) => {
                    return [$1, $2, $3].map(i => +i).join('/');
                }
            )
        )
    ).valueOf();
    
    return momentOfTime > momentOfToday
}

将日期转换成时间戳进行比较, 如果相同则为今天就是2020-07-05, 大于则为超过。

js并不知道,是浏览器告诉他的,浏览器是操作系统告诉他的,操作系统是用户设置的.
所以js的时间是用户设置的.

new Date('2020-07-5').getTime() >= new Date(new Date().toLocaleDateString()).getTime()
+new Date() > +new Date('2020-07-05') // true

可以使用我写的工具类还有很多小工具. 工具地址

也可以使用moment时间工具类来对比,包含了很多种的操作时间的函数moment官网

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
宣传栏