Почему Day.js возвращает «Недопустимую дату» для строк даты API со смещением часового пояса в iOS 15 (mPaaS)?Javascript

Форум по Javascript
Ответить Пред. темаСлед. тема
Anonymous
 Почему Day.js возвращает «Недопустимую дату» для строк даты API со смещением часового пояса в iOS 15 (mPaaS)?

Сообщение Anonymous »

Я работаю над проектом с использованием платформы Mini Program mPaaS от Alibaba Cloud и столкнулся с проблемой анализа даты в JavaScript. В частности, в iOS 15 мои строки даты (например, «2025-01-10 00:00:00.000+0700») возвращают «Недопустимую дату». Я подозреваю, что это связано с более строгими правилами синтаксического анализа в движке WebKit, используемом средой мини-программы. Вот мой код...

Код: Выделить всё

import dayjs from "dayjs";
import utc from "dayjs/plugin/utc";
import timezone from "dayjs/plugin/timezone";

dayjs.extend(utc);
dayjs.extend(timezone);

function dateFormat(datetimeValue) {
let date = dayjs(datetimeValue);

if (!date.isValid() && typeof datetimeValue === "string") {
datetimeValue = datetimeValue.replace(" ", "T"); // Replace space with 'T'
date = dayjs(datetimeValue);
}

return date.format("YYYY-MM-DD HH:mm:ss.SSSZ");
}
Я обрабатываю строки даты из API, например: «2025-01-10 00:00:00.000+0700». Этот формат работает в большинстве сред, но в некоторых случаях возвращает «Недопустимую дату», особенно в iOS 15.
Мои вопросы:
  • Почему Day.js не может проанализировать эту строку даты в некоторых средах?
  • Достаточно ли заменить пробел на букву T, чтобы решить эту проблему?
  • Следует ли нормализовать смещение часового пояса (например, с +07:00 до +07:00)? Если да, то как я могу это эффективно реализовать?
    Как лучше всего обрабатывать недопустимые строки даты в Day.js, особенно при работе с данными API?
    Неверная дата
Я использую Day.js для форматирования строк даты, возвращаемых API. API предоставляет строки даты в следующем формате: «2025-01-10 00:00:00.000+0700». Я заметил, что из-за этих строк Day.js возвращает неверную дату, особенно в iOS 15.
Чтобы это исправить, я попытался заменить пробел между датой и временем на

Код: Выделить всё

datetimeValue = datetimeValue.replace(" ", "T");
Но он все равно вернул неверную дату.
Я ожидал, что Day.js правильно проанализирует строки даты и позволит мне отформатировать их в читаемые форматы, например " 1 ноября 2023 г.».
T:ожидаемый результат

Подробнее здесь: https://stackoverflow.com/questions/793 ... ne-offsets
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Javascript»