javascript - 日期 fns 的 isSameOrBefore 实现
问题描述
由于 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 详细说明日期。
推荐阅读
- r - 如何在 R 中将 JSON 数据转换为整洁的格式
- scala - 如何添加重复计划以发送到 masterRegistryActor
- javascript - 这是闭包在 useState 钩子中的工作方式吗?
- android - 从 Termux 启动 ACODE 或任何其他文本编辑器
- python - 如何选择方形numpy数组的直接较低的非对角线元素?
- amazon-web-services - Amazon SQS - 如何验证队列是否为死信队列?
- java - 警告:未知模块:<...> 指定给 --patch-module
- java - 如何解决在intellij,springboot中导入持久性时出错?
- sql - 在 JSON SQL Server 中解构 JSON 数组
- pine-script - 一段时间后关闭每笔交易