【问题标题】:Javascript date validation?Javascript日期验证?
【发布时间】:2021-02-23 23:21:59
【问题描述】:

我的代码中有这个验证:

  }
        if(!$('#date').val() ) {
            toastr.warning('Incomplete date field');
            return; 
       }

如何验证我的输入#date 不能大于当前日期?还是 getdate() ?

我在装盘

 }
            if(!$('#date').val() )> date.now {
                toastr.warning('Check date');
                return; 
           }

但它不起作用

【问题讨论】:

  • 首先,> date.now 应该在括号中。其次,#date 的值是一个字符串,您必须将其转换为日期对象才能与另一个日期进行比较。
  • 嘿洛佩兹,您通常想要做的第一件事是确认您从表格中获得的日期格式。假设您获得了一个有效的 Unix 纪元时间值,请尝试 (Math.abs($('#date').val()) < Date.now() )

标签: javascript html node.js json reactjs


【解决方案1】:

Date.now() 返回当前时间戳(自 1970 年 1 月 1 日 00:00:00 UTC 以来经过的毫秒数)。可以将其与另一个时间戳进行比较,如下所示:

if (timestamp > Date.now()) {
    toastr.warning('Check date');
    return; 
}

timestamp这里需要通过将文本转换为Date object从输入值中获取。日期对象支持多种格式,见例子here

假设#data 输入的值为2021-12-31timestamp 将是 1640908800000 并且将显示Check date 警告:

// $('#date').val() is '2020-11-20'
const dateObject = new Date($('#date').val());
const timestamp = dateObject.getTime();
// timestamp is 1640908800000
// Date.now() is 1605139119142
// 1640908800000 > 1605139119142
if (timestamp > Date.now()) {
    toastr.warning('Check date');
    return; 
}

P.S. 请注意 JavaScript 区分大小写,因此 Datedate 不同。

P.P.S. 使用 Date 对象解析日期(尤其是时间)有很多问题,因此创建了许多库来以可靠的方式进行解析。例如,MomentJSdate-fns

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多