为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

至尊宝的传说 2022-07-21 10:01:37
我在一个对象中得到了以下属性,它是一个字符串:{end_date: '2017-04-05'}我也有这个:const date = new Date();我如何检查 end_date 属性是否在过去。就像是(obj.end_date < date ? true : false)
查看完整描述

2 回答

?
慕桂英4014372

TA贡献1871条经验 获得超13个赞

如果 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 time

const inThePast = endDate < date;

如果没有时区指示器,规范说它应该被解析为 UTC,因此如上所述创建它。但是,这在规范中有所不同,实现也随之变化。ES5 表示所有没有时区指示符的字符串都应该被解析为 UTC,这与 ISO-8601 不兼容;ES2015 则相反,结果与很多现有代码不兼容;ES2016及更高版本将UTC 用于仅日期形式,将本地时间用于日期/时间形式)。截至 2018 年底,我在这里的回答是,对于相当现代的浏览器,仅日期形式应该可靠地解析为 UTC 跨浏览器。但是,如果您想要本地化,则必须做其他事情。


Non-standard,您也可以将其重新排列为美国日期格式MM/DD/YYYY(使用/, not -),并且我尝试过的每个浏览器都会将其解析为本地时间。但如果你要这样做,你也可以使用如上所示的构造函数来明确指定部分。


查看完整回答
反对 回复 2022-07-21
?
守着一只汪

TA贡献1872条经验 获得超3个赞

如果您不需要检查时区,这应该足够了:


const endDate = new Date(obj.end_date);

const isPast = endDate < date


查看完整回答
反对 回复 2022-07-21
  • 2 回答
  • 0 关注
  • 63 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信