【问题标题】:Luxon - set milliseconds for toISO()Luxon - 为 toISO() 设置毫秒
【发布时间】:2018-08-16 16:58:26
【问题描述】:

我正在使用以下内容来获取来自日期选择器的日期的结束日期:

var date = DateTime.fromISO('2018-05-05').endOf('day');

我想要的结果是

"2018-05-05T23:59:59+02:00"

但是,我无法摆脱毫秒:

console.log(date.toISO({suppressMilliseconds: true}));
// => outputs "2018-05-05T23:59:59.999+02:00"

除了简单地将millisecond 设置为0之外,还有更优雅的方法吗:

date.c.millisecond = 0;
console.log(date.toISO({suppressMilliseconds: true}));
// => outputs "2018-05-05T23:59:59+02:00"

【问题讨论】:

    标签: milliseconds luxon


    【解决方案1】:

    对,suppressMilliseconds 仅适用于它们为 0 的情况。(请参阅here)。

    但是有一个更简单的方法来舍入第二个:

    DateTime.fromISO('2018-05-05')
      .endOf('day')
      .startOf('second')
      .toISO({ suppressMilliseconds: true })
    

    你不应该像你的解决方法那样改变 Luxon 对象。

    【讨论】:

      【解决方案2】:
      const { DateTime } = require("luxon");
      let time = DateTime.now().set({milliseconds: 0});
      time = time.toISO({suppressMilliseconds: true});
      console.log(time);
      

      它应该有助于解决问题。

      【讨论】:

      • OP 询问一天的结束,您的变体正在使用 now()。有一个公认的答案,它几乎可以完成任务。
      【解决方案3】:

      我的做法:

      DateTime.now().toISO().replace(/\.\d{0,3}/, "");
      

      使用 RegExp 删除“.”和毫 我有

      2021-02-22T18:03:29.519Z

      用替换正则表达式

      2021-02-22T18:05:44Z

      【讨论】:

        猜你喜欢
        • 2023-03-27
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-09-10
        • 2021-02-27
        • 2016-03-01
        相关资源
        最近更新 更多