🆕 Дубай UTC+4: дата сдвинулась на день Коллеги, клиент в Дубае. Дата: вчера. На самом деле: сегодня.
formatDate без учёта таймзоны. Все даты в интерфейсе на день раньше.
📍Проблема Клиент жалуется: "Заказ от 15 числа, а у вас показано 14-е".
Проверил код:
formatDate(new Date()) // 14.03.2026
В Дубае UTC+4, у нас UTC+0. Разница 4 часа сдвигает дату.
📍Корень проблемы JavaScript Date работает в локальной таймзоне пользователя. formatDate игнорировал это:
// Неправильно
date.getDate() + '.' + (date.getMonth() + 1)
// Правильно
date.toLocaleDateString('ru-RU', {
timeZone: 'Asia/Dubai'
})
Один метод, кардинально разный результат.
📍Исправление Обновил formatDate в 7 файлах (17 замен):
- utils/dateUtils.js — основная логика
- components/OrderCard.vue — отображение заказов
- pages/Dashboard.vue : аналитика
- components/Calendar.vue : планировщик
- Exports в Excel и PDF
Теперь учитывает таймзону пользователя.
📍Тестирование Проверил с разными таймзонами:
- Лондон UTC+0: 15.03.2026 14:30
- Дубай UTC+4: 15.03.2026 18:30
- Москва UTC+3: 15.03.2026 17:30
- Токио UTC+9: 15.03.2026 23:30
Вся работает корректно.
📍Урок Время и дата : одни из самых сложных вещей в программировании. Всегда думать о таймзонах, локализации, переводе часов.
Использовать проверенные библиотеки: date-fns, moment.js, dayjs.
Как исправил 8 багов локализации за один вечер. Работа с датами и времени в бесплатном гиде.
#моикейсы_поповвии Работаем дальше.