javascript - 检查日期的更好方法是在今天日期之前/之后 1 到 2 天使用时刻
问题描述
如果日期是 1 或 2 天,则在日期后的接下来 1 至 2 天使用红色和绿色,否则为黑色。有没有更好的方法来做到这一点
const date = moment(apptDate).isValid() ? moment(apptDate) : '';
const dateMinus1days = date !== '' ? date.subtract(1, 'day').format('MM/DD/YYYY') : null;
const dateMinus2days = date !== '' ? date.subtract(2, 'day').format('MM/DD/YYYY') : null;
const dateAdd1days = date !== '' ? date.add(1, 'day').format('MM/DD/YYYY') : null;
const dateAdd2days = date !== '' ? date.add(2, 'day').format('MM/DD/YYYY') : null;
let color;
if (dateMinus1days && moment().format('MM/DD/YYYY') === dateMinus1days || dateMinus2days && moment().format('MM/DD/YYYY') === dateMinus2days) {
color = 'green'
} else if (dateAdd1days && moment().format('MM/DD/YYYY') === dateAdd1days || dateAdd2days && moment().format('MM/DD/YYYY') === dateAdd2days) {
color = 'red'
} else {
color = 'black'
}
解决方案
你可以使用isBetween
它:
检查一个时刻是否介于其他两个时刻之间,可选择查看单位规模(分钟、小时、天等)。比赛是独家的。前两个参数将被解析为时刻,如果不是这样的话。
您的代码可能如下所示:
const getColor = (apptDate) => {
let color = 'black';
const date = moment(apptDate);
const now = moment();
const inTwoDays = moment().add(2, 'day');
const twoDaysAgo = moment().subtract(2, 'day')
if (date.isValid() && date.isBetween(twoDaysAgo, now, 'day', '[]')) {
color = 'green';
} else if (date.isValid() && date.isBetween(now, inTwoDays, 'day', '[]')) {
color = 'red';
}
return color;
}
[
moment().format(),
moment().add(1, 'day').format(),
moment().add(2, 'day').format(),
moment().add(3, 'day').format(),
moment().subtract(1, 'day').format(),
moment().subtract(2, 'day').format(),
moment().subtract(3, 'day').format(),
'invalid'
].forEach((elem) => {
console.log(elem, getColor(elem));
})
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.24.0/moment.min.js"></script>
推荐阅读
- python - 循环遍历 pandas 列以获取 wmd 相似性
- c++ - Dijkstra算法超过时间限制?
- sql-server - ADF - 将数组传递给 SQL 存储过程
- javascript - .net Core Fullcalendar 显示点
- sql - 如何修改触发器并确保触发器正常运行以增加 OrderTotal 值
- vagrant - 从 Homestead 中删除旧项目文件夹
- c - 与 C 中的数组相比,如何使用 Malloc 指针
- python - 将 Python 类转换为 Numpy 数组
- memory - OpenCL 中两个设备之间的内存传输
- docker - Docker 服务在准备过程中创建冻结