【问题标题】:How do I compare Durations or Intervals in Luxon?如何比较 Luxon 中的持续时间或间隔?
【发布时间】:2021-12-17 07:35:13
【问题描述】:

我有一个 Interval[],我想知道哪个是最大的间隔。我认为将它们转换为持续时间然后进行比较可能会奏效,但我在 luxon 文档中找不到合适的方法,而且 Google 让我无处可去。

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

【问题讨论】:

    标签: javascript datetime comparison luxon


    【解决方案1】:

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

    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 的原因。

    如果需要更多帮助,我想了解更多关于您到底在努力解决什么问题并查看您已经尝试过什么的信息。

    【讨论】:

    • 假设我有两个间隔——它们有一个开始和结束,可以做成一个持续时间。 const duration1 = interval[0].toDuration() 让我 3 小时 56 分钟。 const duration2 = interval[1].toDuration() 让我 3 小时 12 分钟。我如何比较 duration1 和 duration2 以获得更长的持续时间?或者您可以直接从 Interval 对象执行此操作吗?
    • 您应该通读我提供给您的文档链接,它有一个关于“持续时间数学”的完整部分并显示了各种示例。但是你可以使用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')之类的东西。
    • 我已经阅读了文档,正如我在原始问题中提到的那样。我不知道知道两个持续时间之间有 44 分钟的差异如何告诉我哪个更长?除非有负持续时间这样的东西,它会返回一个。
    • 如果你执行 a.diff(b) 并得到一个负数,那么 a 更长,如果你执行 a b.diff(a) 并得到一个负数,那么 b 更长,你可以交换他们的位置,看看哪个更长。
    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-12-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-04-22
      • 2021-05-21
      相关资源
      最近更新 更多