将日期与字符串 javascript 进行比较

我在一个对象中得到了以下属性,它是一个字符串:

{end_date: '2017-04-05'}

我也有这个:

const date = new Date();

我如何检查 end_date 属性是否在过去。就像是

(obj.end_date < date ? true : false)


至尊宝的传说
浏览 85回答 2
2回答

慕桂英4014372

如果 end_date是 UTC,你可以这样做:const endDate = new Date(obj.end_date + "Z");const inThePast = endDate < date;Z说UTC 。如果是当地时间(是的,即使只有日期也很重要),最好的办法是解析它并从部分构建它:const [year, month, day] = obj.end_date.split("-");const endDate = new Date(+year, month - 1, +day); // Local timeconst inThePast = endDate < date;如果没有时区指示器,规范说它应该被解析为 UTC,因此如上所述创建它。但是,这在规范中有所不同,实现也随之变化。ES5 表示所有没有时区指示符的字符串都应该被解析为 UTC,这与 ISO-8601 不兼容;ES2015 则相反,结果与很多现有代码不兼容;ES2016及更高版本将UTC 用于仅日期形式,将本地时间用于日期/时间形式)。截至 2018 年底,我在这里的回答是,对于相当现代的浏览器,仅日期形式应该可靠地解析为 UTC 跨浏览器。但是,如果您想要本地化,则必须做其他事情。Non-standard,您也可以将其重新排列为美国日期格式MM/DD/YYYY(使用/, not -),并且我尝试过的每个浏览器都会将其解析为本地时间。但如果你要这样做,你也可以使用如上所示的构造函数来明确指定部分。

守着一只汪

如果您不需要检查时区,这应该足够了:const endDate = new Date(obj.end_date);const isPast = endDate < date
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript