如何使用JavaScript判断日期先后顺序?

3

我有一个日期 const date1 = "2020-08-08"

我想检查这个日期是在今天之前还是之后

const date1 = "2020-08-08"
const today = new Date()
if(date1 > new Date) {
    console.log("date1 is the future")
} else {
    console.log("date1 is the past")
}

以上代码无法正常工作,但我正在尝试类似的操作。有什么办法吗?

5个回答

1
尝试使用 getTime()
var date1 = new Date(2020 - 08 - 08);
var today = new Date();  
if (date1.getTime() > today.getTime()) {
  // Date 1 is the Future
} else {
  // Today is the Future
}

或者你可以直接比较,例如date1 > today

如果你有日期字符串,那么需要解析使用,

var date1 = Date.parse("2020-08-08");

一个好的答案应该解释为什么OP会遇到这个问题,以及你的代码如何解决它。它不应该包含语法错误。 - RobG

0

这里是一个可用的代码片段,可以帮助你开始:

let date1 = Date.parse("2020-08-08");
let today = new Date();

if (date1 < today) {
  console.log("Date1 is in the past");
} else {
  console.log("Date1 is in the future");
}


0

0

你可以提取今天并进行比较:

var now = new Date();
var month = (now.getMonth() + 1);               
var day = now.getDate();
if (month < 10) 
    month = "0" + month;
if (day < 10) 
    day = "0" + day;
var year = now.getFullYear();
var today = year + '-' + month + '-' + day;

你可以分别比较年、月和日并查看。


0
if (date1 > new Date) 中,表达式 new Date 返回一个字符串,因此你实际上是在比较 '2020-08-08' > new Date().toString()。由于两个操作数都是字符串,它们将按字典顺序进行比较,而且由于左侧字符串以数字开头,右侧字符串始终以字母开头,结果将始终为 false。
你可能想要做的是:
const date1 = "2020-08-08";
const today = new Date();
if (date1 > today) {
    console.log("date1 is the future");
}

然而,'2020-08-08' 将被解析为 UTC 时间,所以在八月八日,测试结果可能会根据主机系统偏移设置和代码执行的时间返回 true 或 false。请参见 为什么 Date.parse 返回不正确的结果?

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接