Luxon - установить миллисекунды для toISO()

Я использую следующее, чтобы получить конец дня для даты, выбираемой из средства выбора даты:

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"

3 ответа

Решение

Правильно, suppressMilliseconds применяется только если они 0. (см. здесь).

Но есть гораздо более простой способ округлить вторую:

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

Вы никогда не должны мутировать объект Luxon, как в вашем обходном пути.

      const { DateTime } = require("luxon");
let time = DateTime.now().set({milliseconds: 0});
time = time.toISO({suppressMilliseconds: true});
console.log(time);

Должно помочь и решить проблему.

Как я это сделал:

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

Использование RegExp для удаления символа "." и миллис у меня был

2021-02-22T18:03:29.519Z

С заменой RegExp

2021-02-22T18:05:44Z

Другие вопросы по тегам