提问人:Laura 提问时间:11/3/2021 更新时间:11/12/2021 访问量:4518
如何比较 Luxon 中的持续时间或间隔?
How do I compare Durations or Intervals in Luxon?
问:
我有一个 Interval[],我想知道哪个是最大的间隔。我以为将它们转换为持续时间然后进行比较可能会起作用,但我在 luxon 文档中找不到合适的方法,而 Google 也无济于事。
如何比较持续时间或间隔?谢谢!
答:
0赞
user16435030
11/3/2021
#1
一种方法是您可以将拥有的日期转换为 ISO 字符串,然后用于获取差异。https://moment.github.io/luxon/#/math?id=diffs。diff
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 milliseconds
let 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()
将为您提供间隔的长度(以毫秒为单位)。因此,您只需要找到结果最高的区间。
评论