【问题标题】:How to check for one date is less than or equal another date in Javascript [duplicate]如何在Javascript中检查一个日期是否小于或等于另一个日期[重复]
【发布时间】:2015-03-11 22:58:31
【问题描述】:

我很难检查一个日期是否小于或等于另一个日期。

这是我的代码,

var bftStartDt = input1[0]; //This is a string with value "01-Jul-2007"
var bftEndDt = input1[4]; //This is a string with value "01-Jul-1942"

var strtDt = new Date(bftStartDt);
var endDt = new Date(bftEndDt);
var flag = 0; // false

if (endDt <= strtDt){
   flag = 1; // true
}

它从不应该进入 if 语句?我在这里错过了什么。

谢谢

【问题讨论】:

  • 您是否验证过您实际上是在从字符串构造有效的 Date 实例?
  • 否 - 我该怎么做?
  • 没关系 - 我刚刚注意到您的示例日期格式。 JavaScript 将无法直接解析它。您可能想查看 Moment.js 库。
  • 我觉得很好jsfiddle.net/haf5Ld2v
  • 适用于 Chrome,但不适用于我的 IE 或 FF。不要相信那种日期格式。使用其中一种标准。

标签: javascript date


【解决方案1】:
var strtDt  = new Date("2007-07-01");
var endDt  = new Date("1942-07-01");
var flag = 0; // false

if (endDt <= strtDt){
   flag = 1; // true
   alert("true");
}

看看plunker就可以了

【讨论】:

  • @AmadeusDrZaius 更正它现在适用于 FF
  • 哦,太好了。然后删除我的两个 cmets...
【解决方案2】:

这里的问题是01-Jul-2007 不是Date 对象支持的格式。尝试改用2007-01-07。然后您的程序按预期运行。

var bftStartDt = "01-07-2007"; //This is a string with value "01-Jul-2007"
var bftEndDt = "01-07-1942"; //This is a string with value "01-Jul-1942"

var strtDt = new Date(bftStartDt);
var endDt = new Date(bftEndDt);
var flag = 0; // false

if (endDt <= strtDt){
   flag = 1; // true
}

if(flag === 1) {
  console.log("It worked.");
}

根据MDN,接受的格式有:

表示 RFC2822 或 ISO 8601 日期的字符串(可以使用其他格式,但结果可能出乎意料)。

所以您也可以使用Jul 01 2007 格式。完整的格式列表在RFC 2822

【讨论】:

  • 如何处理日期选择器获取的“DD MON, YYYY”格式?
猜你喜欢
  • 2016-09-25
  • 2015-02-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-02-24
  • 1970-01-01
  • 2019-11-06
相关资源
最近更新 更多