【问题标题】:Comparing two dates in jquery script [duplicate]比较jquery脚本中的两个日期[重复]
【发布时间】:2019-07-27 08:17:48
【问题描述】:

我正在尝试在浏览器控制台中比较两个相同的日期并将结果作为false。由于两个日期相同,我不明白如何比较?

$(function()
{
  var d1 = new Date("01-12-2001");
  var d2 = new Date("01-12-2001");
  
  console.log(d1 == d2);
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>

但是在这里,如果尝试与 GT 和 LT 进行比较,那么它的工作原理。

【问题讨论】:

  • “工作”取决于您对结果的期望。 “01-12-2001”不是 ECMA-262 支持的格式,因此解析取决于实现。当前至少有两个浏览器会返回一个无效的日期,

标签: javascript jquery date date-comparison


【解决方案1】:

它正在检查对象是否相等。而是比较时间。

$(function()
{
  var d1 = new Date("2001-12-01");
  var d2 = new Date("2001-12-01");
  
  console.log(d1.getTime() == d2.getTime());
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>

【讨论】:

  • 除了在某些浏览器中结果是NaN == NaN,它总是假的。
  • @RobG OP 正在比较两个 Date 对象并期望为真。那不会发生。建议是比较时间。在某些浏览器(IE 是其中之一)中无法识别日期模式,因此您会得到 NaN。当然必须处理,或者需要将日期格式更改为可接受的格式。
  • 这个答案在 Safari 或 Firefox 中“不起作用”。这将有助于 OP 在同一个答案中解决解析问题,而不是让他们稍后发现它并不得不提出另一个问题。
【解决方案2】:

根据通用时间使用与指定日期的时间对应的数值。

在你的情况下使用这个

console.log((new Date("2001-12-01")).getTime() === (new Date("2001-12-01")).getTime());

编辑:解析的日期格式应该是YYYY-MM-DD

【讨论】:

  • 在 Safari 和 Firefox 中返回 false。
  • @RobG - 是的,没错,我错过了解析日期。
【解决方案3】:

您需要先将new Date() 格式化为日期时间字符串。

var d1 = new Date("01-12-2001");
var d2 = new Date("01-12-2001");

console.log(d1.toLocaleDateString() == d2.toLocaleDateString());

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-08-09
    • 1970-01-01
    • 2014-07-16
    • 1970-01-01
    • 2011-03-01
    • 1970-01-01
    • 1970-01-01
    • 2013-06-22
    相关资源
    最近更新 更多