【问题标题】:How to detect if the date is in the past using JavaScript?如何使用 JavaScript 检测日期是否过去?
【发布时间】:2018-06-10 15:33:51
【问题描述】:

我需要使用 javascript 检查日期是否过去。

日期格式是这样的:10/06/2018

我可以使用以下代码做到这一点:

var datep = '10/06/2018';
if(Date.parse(datep)-Date.parse(new Date()) < 0) {
   alert('date is in the past');
}

但这段代码似乎只检查Year。所以如果MonthDay 是过去的,它会忽略它!

有人可以在how to check for the day and month as well as the year上提供建议吗?

提前致谢。

编辑:

日期格式是

dd/mm/yyyy 

【问题讨论】:

  • 不相关但令人困惑,你为什么在 Date 对象上调用 Date.parse
  • 你的日期是 dd/mm/yyyy 还是 mm/dd/yyyy 格式?
  • @user3210641 它在 dd/mm/yyyy
  • 这么想,所以提供的答案不起作用

标签: javascript jquery date


【解决方案1】:

查看date constructor in the documentation 请参阅“语法”,它需要以下顺序的整数:YYYY,MM,DD,HH,MM,SS...

所以重新排序就是诀窍。请记住,月份是从零开始的。

var date = '09/06/2018'; // DD/MM/YYYY

// Create a date object...
var dateArr = date.split("/");
var dateToCompare = new Date(parseInt(dateArr[2]),parseInt(dateArr[1])-1,parseInt(dateArr[0]));
console.log(dateToCompare);

// Date object for today
var today = new Date();
console.log(today);

if(dateToCompare < today){
  alert('date is in the past');
}

强烈建议处理日期的另一种方法是使用Moment.js

因此您可以轻松管理任何日期格式...并可靠地输出各种日期计算。

var date = '10/06/2018'; // DD/MM/YYYY

// Create a date object...
var dateToCompare = moment(date,"DDMMYYYY");  // See that second argument?
console.log(dateToCompare);

// Date object for today
var today = moment().startOf('day');  // At midnight earlier today
console.log(today);

if(dateToCompare < today){
  alert('date is in the past');
}
&lt;script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.22.2/moment.min.js"&gt;&lt;/script&gt;

【讨论】:

  • 不适合我。 var date = '10/06/2018' 告诉我日期已过去。今天肯定是第 10 号 :-)
  • 那是因为today现在应该被命名...它包括一天中的实际时间。比较的日期就像在一天开始的午夜。查看console.logs
  • 你是对的,但 OP 询问 DATE 是否在过去。不是日期+时间。
【解决方案2】:

把它变成两个数字并比较

var date1 ='05/06/2018';
date1=parseInt(date1.split('/').reverse().join(''));
//number 20180605

var date2 = new Date();
date2 = parseInt(date2.toISOString().slice(0,10).replace(/-/g,""));
// number 20180610

//compare
if(date1<date2)alert('in the past');

【讨论】:

  • 这完全没有必要。 Date API 完全涵盖了这个用例,不需要字符串解析和其他类似的技巧。
猜你喜欢
  • 2012-01-08
  • 1970-01-01
  • 2011-03-18
  • 1970-01-01
  • 2017-07-01
  • 1970-01-01
  • 2017-01-24
  • 1970-01-01
相关资源
最近更新 更多