javascript - luxon 遇到问题,计算两个日期之间的时间差
问题描述
StackOverflow 的好心人,我遇到了 luxon 的问题(我想我设置错误或做错了什么),现在它无法计算未来的日期(说 NaN),并且过去的日期需要数年时间帐户,所以你会得到这样的东西:
[
我想要这段代码做的是关注月份和日期(忘记年份),如果过去的日期距离今天的日期还有 7 天或距离今天的日期不到 7 天,请说“过去的日期是 <= 一周”,稍后这将触发一个通知器,它将在我的朋友和家人生日前一周通知我。
编码:
const isBirthdayThisWeek = (birthDate) => {
const endDate = DateTime.now()
const startDate = DateTime.fromISO(birthDate)
const interval = Interval.fromDateTimes(startDate, endDate)
const dateDifference = interval.length('days')
const wholeNumberedDateDifference = Math.round(dateDifference)
wholeNumberedDateDifference <= 7
? console.log('bday is in less than a week', wholeNumberedDateDifference)
: wholeNumberedDateDifference > 7
? console.log('bday is more than in a week', wholeNumberedDateDifference)
: console.log('something went wrong', wholeNumberedDateDifference)
}
谢谢大家。
解决方案
您可以使用计算持续时间的大小。持续时间适用于未来和过去的两个时间间隔。将开始日期调整为“捕捉”到当前年份,这样日期差异就不会跨越年份边界。
import { DateTime } from "luxon";
const startDate = DateTime.fromISO("2000-04-26").set({
year: DateTime.now().get("year")
});
const diff = Math.abs(startDate.diffNow().as('day'));
const wholeNumberedDateDifference = Math.round(diff);
if (diff <= 7) {
console.log("bday is in less than a week", wholeNumberedDateDifference);
} else {
console.log("bday is more than in a week", wholeNumberedDateDifference);
}
输出
bday is in less than a week 2
演示
推荐阅读
- c++ - dds delete_contained_entities 共享库中没有名为 A.cpp 的源文件
- node.js - 如果在此 Node.js 上下文中未定义 require,如何使用它?
- python - ValueError:使用序列设置数组元素。我收到提到的 ODEINT 操作数错误。你能帮我吗
- java - 如何在没有用户登录的情况下将 microsoft graph rest apis 用于一个驱动器等脱机?
- python - keras 模型具有良好的准确性和 val acc,但无法预测,甚至无法预测训练数据
- javascript - 使用domtoimage生成的pdf,jspdf与原始HTML页面不同
- flutter - Flutter 改变 body 内容
- google-cloud-dataflow - Google 数据流警告`Rpc 到 InMemory 已完成,但出现错误 ABORTED: Evicted due to staleness`
- spring - 使用 ContentCachingResponseWrapper 提取正文的 Spring 过滤器始终返回 200
- postgresql - Postgresql - 自连接性能差