javascript - 日期 fns 的 isSameOrBefore 实现

标签 javascript momentjs date-fns

由于 moment 已被弃用,我决定从我的整个项目中隐藏 moment,并考虑使用 datefns 作为替代。当我浏览代码文件时,我遇到了一句话,

moment(date1).isSameOrBefore(date2, year);
我开始寻找与该功能类似的东西,但不幸的是,date-fns 没有任何东西可以执行基于精度的比较(即:年、月或日期比较)?任何人都可以建议一些使用 date-fns 的解决方法吗?

最佳答案

使用 startOfSOMETHING()您可以使用分钟、小时、日、月 ecc 来检查日期是否早于或相同,以比较它们。

const dateBefore = dateFns.startOfHour(new Date(1988, 9, 26, 05, 35));
const dateSame = dateFns.startOfHour(new Date(1988, 9, 26, 11, 55));
const dateAfter = dateFns.startOfHour(new Date(1988, 9, 26, 16, 50));

const limit = dateFns.startOfHour(new Date(1988, 9, 26, 11, 55));

// dateBefore < limit => is before
if (dateFns.isBefore(dateBefore, limit) || dateFns.isEqual(dateBefore, limit)) console.log(dateFns.format(dateBefore), 'is before');
else console.log('is not before');

// dateSame === limit => is same
if (dateFns.isBefore(dateSame, limit) || dateFns.isEqual(dateSame, limit)) console.log(dateFns.format(dateSame), 'is same');
else console.log('is not same');

// dateAfter > limit =>  is after
if (dateFns.isBefore(dateAfter, limit) || dateFns.isEqual(dateAfter, limit)) console.log('you mustnt see that message ');
else console.log(dateFns.format(dateAfter), 'is after');
<script src="https://cdnjs.cloudflare.com/ajax/libs/date-fns/1.28.5/date_fns.min.js"></script>

在我看来,这个库很糟糕,我更喜欢与 moment.js 非常相似的 day.js 或使用 new Date() 详细说明日期Javascritp 的。

关于javascript - 日期 fns 的 isSameOrBefore 实现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68314103/

相关文章:

javascript - 在phonegap中的数据库事务语句之前发出警报

javascript - IE 中的 createTreeWalker - 有限制吗?

javascript - 将 ISO 8601 时间格式化为 Laravel View

javascript - JS : parse time to pull out hours and minutes using date-fns, 忽略时区

javascript - ajax 加载应在选中时保持我的复选框的状态

javascript - 在 GruntJS 任务中使用 ‘this.files’ 时出现问题

javascript - 我正在尝试使用 momentjs 将变量转换为日期

Angular 8 和 Angular cli, "ng serve"包含 moment.js 或 popper.js 模块的应用程序问题

javascript - date-fns 格式 24 小时格式的时间

javascript - 用两个日期之间的日期填充对象数组