Javascript日期时间验证- yyyy-mm-dd hh:mm

Javascript Date Time Validation - yyyy-mm-dd hh:mm

本文关键字:hh mm yyyy-mm-dd 日期 时间 验证 Javascript      更新时间:2023-09-26

我想创建一个非常简单的javascript表单验证。我有两个由日期时间选择器填充的输入框。日期时间选择器以格式2011-12-21 09:58填充输入框。我有一个收集日期和到达日期的输入框。

我想验证输入的'deliverdatetime'是否大于'collectdatetime'。

验证失败的输出应该只是在一个弹出窗口中,在'coolectdate'之前显示'deliverdate'。

这可以用javascript完成,如果是这样,有人能给我一个简短的例子吗?

我的基本HTML表单代码是:

...
<td>
<input type="text" id="collectdatetime" name="collectdatetime">
</td>
<td>
<input type="text" id="deliverdatetime" name="deliverdatetime" >
</td>
...

提前感谢大家的帮助,祝大家节日快乐。

问候,瑞安史密斯

给定日期/时间字符串的ISO8601格式,您可以将值作为字符串进行比较。这是使用ISO8601格式的优点之一。你要求交货时间在收款时间之后,这对我来说似乎是向后的,但无论如何……

<form onsubmit="return checkDates(this)">
  <table>
    <tr>
      <td>
        <input type="text" id="collectdatetime" name="collectdatetime">
      <td>
        <input type="text" id="deliverdatetime" name="deliverdatetime">
      <td>
        <input type="submit">
  </table>
</form>
<script>
function checkDates(form) {
  if (form.collectdatetime.value >= form.deliverdatetime.value) {
    alert('Collection time must be after deliver time');
    return false;
  }
}
</script>

你可以这样做:

var collectTime = (new Date(document.getElementById("collectdatetime").value)).getTime(),
    deliverTime = (new Date(document.getElementById("deliverdatetime").value)).getTime();
if(deliverTime > collectTime) {
    //Ok!
}

创建2个Date对象,将选择的值传递给构造函数,然后比较时间。getTime方法返回一个数字,表示自1970年1月1日00:00:00以来所经过的时间(以毫秒为单位)。

您可以从这些值创建Date对象并比较它们:

var collect = new Date($('#collectdatetime').val());
var delivery = new Date($('#deliverdatetime').val());
if (delivery < collect) {
    alert('Delivery date before collect!');
}