Luxon的
Duration.fromISO
方法的文档描述为:
从ISO 8601时间段字符串创建持续时间
文档中没有提到基于两个日期创建一个持续时间的能力。我的典型用例是:"事件在ISODAT1和ISODATE2之间是否持续了一个小时以上?"。
我的做法是将日期转换成时间戳并检查差值是否大于3600(秒),不过我相信有更本地化的方式来进行检查。
Duration.fromISO
方法的文档描述为:
从ISO 8601时间段字符串创建持续时间
文档中没有提到基于两个日期创建一个持续时间的能力。我的典型用例是:"事件在ISODAT1和ISODATE2之间是否持续了一个小时以上?"。
我的做法是将日期转换成时间戳并检查差值是否大于3600(秒),不过我相信有更本地化的方式来进行检查。
DateTime
的 .diff
方法(文档)。
返回两个日期时间之间的差异作为持续时间。
const date1 = luxon.DateTime.fromISO("2020-09-06T12:00")
const date2 = luxon.DateTime.fromISO("2019-06-10T14:00")
const diff = date1.diff(date2, ["years", "months", "days", "hours"])
console.log(diff.toObject())
<script src="https://cdn.jsdelivr.net/npm/luxon@1.25.0/build/global/luxon.min.js"></script>
const date1 = luxon.DateTime.fromISO("2020-09-06T12:00");
const date2 = luxon.DateTime.fromISO("2019-06-10T14:00");
const diff = Interval.fromDateTimes(later, now);
const diffHours = diff.length('hours');
if (diffHours > 1) {
// ...
}
Luxon文档中提到了持续时间和间隔。
如果您想知道某事是否超过一小时,则最好使用Intervals,然后在Interval上调用.length('hours')
。
Duration类表示时间量,例如“2小时7分钟”。
const dur = Duration.fromObject({ hours: 2, minutes: 7 });
dur.hours; //=> 2
dur.minutes; //=> 7
dur.seconds; //=> 0
dur.as('seconds'); //=> 7620
dur.toObject(); //=> { hours: 2, minutes: 7 }
dur.toISO(); //=> 'PT2H7M'
时间段是指一段特定的时间,比如“从现在到午夜之间”。它实际上是由两个形成端点的日期时间对象组成的包装器。
const now = DateTime.now();
const later = DateTime.local(2020, 10, 12);
const i = Interval.fromDateTimes(now, later);
i.length() //=> 97098768468
i.length('years') //=> 3.0762420239726027
i.contains(DateTime.local(2019)) //=> true
i.toISO() //=> '2017-09-14T04:07:11.532-04:00/2020-10-12T00:00:00.000-04:00'
i.toString() //=> '[2017-09-14T04:07:11.532-04:00 – 2020-10-12T00:00:00.000-04:00)
DateTime.now().diff(DateTime.fromISO(date))
的方法。 - CTS_AEInterval.fromDateTimes(date1, date2).length('hours')
。 - CTS_AEif (durToObject.hours >= 2 && durToObject.minutes >= 1) { **错误** }
- Nikhil Nanjappa