【问题标题】:Javascript swaps to mm/dd date but the input field is dd/mmJavascript 交换为 mm/dd 日期,但输入字段为 dd/mm
【发布时间】:2017-08-25 17:51:27
【问题描述】:

我有一个带有此日期字段的引导程序的 html 表单:

<input type="date" class="form-control" id="from" name="from" placeholder="dd/mm/yyyy">
<input type="date" class="form-control" id="to" name="to" placeholder="dd/mm/yyyy">

我需要比较两者以检查“to”是“from”之后的日期,但是当我使用此代码进行比较时:

if(new Date($("#from").val() > new Date($("#to").val()) ....

计算出错了,因为它在后台将月份数字与日期数字交换。如何强制它采用 dd/mm/yyyy 格式(或将输入转换为 mm/dd/yyyy)以获得正确的计算? 谢谢。

【问题讨论】:

  • 看不到 ID 为 'dal' 和 'al' 的元素)你确定你的选择器吗?
  • new Date() 期望它为 mm/dd/yyyy
  • @JohanWillfred 你是对的我现在已经更正了代码。

标签: javascript html twitter-bootstrap date


【解决方案1】:

在 Javascript 中,您可以将日期生成为 new Date(year,month,day),您需要以这种方式构建您的日期,然后尝试这个,

var date = new Date(2010,10,10)
(new Date().getTime() - date.getTime())/ (24 * 60 * 60 * 1000)

在这段代码中,我从当前日期中减去日期,只需稍加修改,您就可以使其适用于您的代码。

【讨论】:

    【解决方案2】:

    您不能使用占位符强制日期格式。如果浏览器很好地支持日期,它将根据本地设置被覆盖,在这种情况下,实际字段值应始终为 YYYY-MM-DD 格式。这就是 Chrome 处理该字段的方式。

    在这种情况下它会起作用

    var from = new Date($("#from").val());
    var to = new Date($("#to").val());
    if (from > to) 
    

    例如 Firefox 等其他浏览器不能很好地支持日期字段。它就像普通的文本输入一样工作。在这种情况下,您将需要进行一些字符串操作来分隔值并以 Date() 期望的方式插入它们: 新日期(YYYY, MM, DD);

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-10-25
      • 2021-12-31
      • 1970-01-01
      • 1970-01-01
      • 2014-05-30
      • 1970-01-01
      • 2023-03-26
      相关资源
      最近更新 更多