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