Почему я получаю "Неверный DateTime" в следующем коде Luxon/Moment?

const dt = DateTime.fromISO(new Date(date))
// dt => DateTime {ts: 1516876197386, zone: LocalZone, loc: Locale, invalid: "unparsable", weekData: null, …}
return dt.toFormat('yyyy/mm/dd')

Результат: Invalid DateTime, Почему это и как это исправить?

Документы Luxon: https://moment.github.io/luxon/docs/class/src/datetime.js~DateTime.html

1 ответ

Решение

fromISO:

Создать DateTime из строки ISO 8601

принимает строку ISO, пока вы передаете JavaScript Date.

Вы можете использовать даты toISOString() или люксон fromJSDate

const DateTime = luxon.DateTime;
const dt = DateTime.fromISO(new Date().toISOString());
console.log(dt.toFormat('yyyy/MM/dd'));
const dt2 = DateTime.fromJSDate(new Date());
console.log(dt2.toFormat('yyyy/MM/dd'));
<script src="https://moment.github.io/luxon/global/luxon.min.js"></script>

Кроме того, обратите внимание, что вы должны использовать верхний регистр MM печатать месяц вместо строчных mm это стоит минут.

Вы можете использовать fromJSDate как: luxon.DateTime.fromJSDate(new Date())

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