If/Else 语句出现问题

问题描述 投票:0回答:1

对于编程来说,我是一个新手。我的任务是使用嵌入了 Javascript 的 Java 程序来修改标签的一部分。 I 标签使用在其他地方定义的 2 个变量:fillDate 和 ExpDate。我正在编写的代码尝试获取 fillDate,添加 6 个月,如果大于 ExpDate,则打印该日期。如果没有,请打印 ExpDate。

我有代码只打印 fillDate + 6 个月,它看起来像这样。

var x = 6;
var date = fillDate;
date.setMonth(date.getMonth() + x);
date;

该代码可用于打印 fillDate + 6 个月。当我尝试将其与 expDate 进行比较时,我写了这个

var x = 6;
var date = fillDate;
var exp = ExpDate;
date.setMonth(date.getMonth() + x);
if (date >= exp) {
date;
}
else {
exp;
}

当我执行此操作时,它只是打印 ExpDate,似乎跳过了整个 if 语句。我真的不知道如何解决这个问题。

javascript java
1个回答
0
投票

您似乎正在尝试比较两个日期,

date
exp
,以确定哪一个更大。但是,直接使用
>=
运算符比较日期可能无法按 JavaScript 中的预期工作,因为它比较日期的引用而不是它们的值。

要根据日期值比较日期,您应该将它们转换为自 Unix 纪元以来的毫秒数,然后比较这些值。您可以通过以下方式修改代码来实现这一目标:

var x = 6;
var date = new Date(fillDate.getTime()); // Create a new Date object to avoid modifying the original fillDate
var exp = new Date(ExpDate.getTime()); // Create a new Date object for expDate as well

date.setMonth(date.getMonth() + x);

if (date.getTime() >= exp.getTime()) {
    console.log(date); // or any other action you want to take
} else {
    console.log(exp); // or any other action you want to take
}

在此修改版本中,

getTime()
用于获取每个日期自 Unix 纪元以来的毫秒数,以便进行正确的比较。另外,我使用
console.log()
来打印日期值,但您可以根据比较结果将其替换为您想要执行的任何操作。

© www.soinside.com 2019 - 2024. All rights reserved.