#javascript #typescript #vue.js #date #dayjs
#javascript #typescript #vue.js #Дата #dayjs
Вопрос:
Используйте его в браузере, если это имеет значение (firefox Vue typescript).
Это моя строка даты
2021-02-05 12:00
Это беспокоит AM / PM в моем коде:
const dateObj: any = dayjs('2021-02-05 12:00 AM').format('YYYY-MM-DD hh:mm A');
Вывод dateObj
всегда «Недопустимая дата». Если я удалю «AM» из строки, он будет правильно проанализирован. Если я попробую этот онлайн-тестер для того же кода, результат будет
NaN-NaN-NaN NaN:NaN PM
Как и в моей среде разработки, если я удалю AM, все в порядке.
Есть идеи?
РЕДАКТИРОВАТЬ: работает в Chrome, а не в Firefox…
Комментарии:
1. Я получаю
2021-02-05 12:00 AM
тестер, на который вы ссылались. Я использовалdayjs('2021-02-05 12:00 AM').format('YYYY-MM-DD hh:mm A')
.2. @Ouroborus Странно, вот скриншот моего результата: i.imgur.com/WrtSk9Z.png РЕДАКТИРОВАТЬ: Кажется, работает на Chrome, а не на FF???
Ответ №1:
Проблема в Firefox
Если вы внимательно посмотрите на реализацию, вы увидите, что приведенная выше строка дня проходит через Day
конструктор : new Day('2021-02-05 12:00 AM')
. К сожалению, FF не поддерживает этот формат строки поддержки этого дня, но Chrome поддерживает.
Наилучший подход
В документации dayjs упоминается:
Для получения согласованных результатов анализа чего-либо, кроме строк ISO 8601, вы должны использовать String Format .
Если вы все еще хотите использовать вышеуказанный формат, вам придется использовать плагин, как указано здесь
В принципе, вы должны изменить, как показано ниже, для работы во всех браузерах:
import customParseFormat from 'dayjs/plugin/customParseFormat'
import dayjs from "dayjs"
dayjs.extend(customParseFormat)
const yourDate = dayjs('2021-02-05 12:00 AM', 'YYYY-MM-DD HH:mm A')