如何比较 Luxon 中的持续时间或间隔?

How do I compare Durations or Intervals in Luxon?

提问人:Laura 提问时间:11/3/2021 更新时间:11/12/2021 访问量:4518

问:

我有一个 Interval[],我想知道哪个是最大的间隔。我以为将它们转换为持续时间然后进行比较可能会起作用,但我在 luxon 文档中找不到合适的方法,而 Google 也无济于事。

如何比较持续时间或间隔?谢谢!

JavaScript 日期时间 比较 Luxon

评论


答:

0赞 user16435030 11/3/2021 #1

一种方法是您可以将拥有的日期转换为 ISO 字符串,然后用于获取差异。https://moment.github.io/luxon/#/math?id=diffsdiff

var end = DateTime.fromISO('2017-03-13');
var start = DateTime.fromISO('2017-02-13');

var diffInMonths = end.diff(start, 'months');
diffInMonths.toObject(); //=> { months: 1 }

这是他们在该文档中显示的示例。

您还可以将日期转换为 unix 时间戳并减去它们以获得差值,然后将其转换回日期。

如果您不知道“Luxon”是(现已弃用的)“moment”包的改进包,这就是文档仍在使用 moment 的原因。

为了获得更多的帮助,我想要更多关于你到底在挣扎什么的信息,看看你已经尝试过什么。

评论

0赞 Laura 11/3/2021
假设我有两个间隔 - 它们有一个开始和结束,可以制作成一个持续时间。const duration1 = intervals[0].toDuration() 让我得到 3 小时 56 分钟。const duration2 = intervals[1].toDuration() 让我得到 3 小时 12 分钟。如何比较 duration1 和 duration2 以获得更长的持续时间?或者您可以直接从 Interval 对象执行此操作吗?
0赞 11/3/2021
您应该通读我提供给您的文档链接,它有一整节关于“持续时间数学”,并显示了各种示例。但是你可以使用,你可以使用,你可以根据你的需要使用,你可以很容易地减去或比较持续时间,以找到天/毫秒/任何东西的差异。您可以使用类似 .var dur = Duration.fromObject({ months: 4, weeks: 2, days: 6 })dur.as('seconds') 1 hour = 60 * 60 * 1000 millisecondslet diff = interval1.diff(interval2, 'hours')
0赞 Laura 11/3/2021
正如我在最初的问题中提到的,我已经阅读了文档。我不明白知道两个持续时间之间有 44 分钟的差异会告诉我哪个更长?除非存在负持续时间之类的东西,否则它将返回一个。
0赞 11/3/2021
如果你做一个 a.diff(b) 并得到一个负数,那么 a 更长,如果你做一个 b.diff(a) 得到一个负数,那么 b 更长,你可以交换它们的位置,看看哪一个更长。
0赞 snickersnack 11/12/2021 #2

yourInterval.length()将为您提供间隔的长度(以毫秒为单位)。因此,您只需要找到结果最高的区间。