日期比较给出错误结果

时间:2021-04-07 18:06:22

标签: javascript c# asp.net-mvc

我从 API 响应中获取 DateTime,对于某些数据,我得到如下虚拟日期:

0001-01-01T00:00:00

现在,我想检查如果我得到一个像上面那样的虚拟日期,那么我想在我的变量中存储空值,否则就是确切的日期。

我有一个类似下面的代码,但得到“NAN”:

console.log("2017-01-01T00:00:00" == "0001-01-01T00:00:00" ? null : moment("2017-01-01T00:00:00", "DD/MM/YYYY").year()); //output Nan

我不明白这里有什么问题。有人可以帮我吗?

1 个答案:

答案 0 :(得分:1)

如果您尝试这样做,将实际格式传递给 moment 函数,它会在您的情况下输出 2017。

console.log("2017-01-01T00:00:00" == "0001-01-01T00:00:00" ? null : moment("2017-01-01T00:00:00", "YYYY-MM-DDT h:mm:ss").year()); //outputs 2017

如果你想比较日期而不考虑日期时间格式,你可以这样做:

console.log(moment('2017-01-01T00:00:00').format('YYYY-MM-DD')); //date1
console.log(moment('2017-01-01T00:00:00').format('YYYY-MM-DD')); //date2

您现在可以通过设置您想要的格式来比较 2 个日期,而不管原始格式

还包括评论中的 isSame 版本:

moment('2010-10-20').isSame('2010-10-20'); // true

但如果您有特殊情况,您应该考虑阅读 moment.js 文档。

相关问题