Я сталкиваюсь с тем, что кажется распространенной проблемой использования средства выбора даты javascript для отображения и предоставления пользователям возможности выбирать даты из календаря доступных дат расписания для бронирования номеров.
Преобразование часового пояса в браузере означает, что эти даты всегда отличаются с некоторым отрывом, так что часто при отображении зарезервированной даты для пользователя дата будет выпадать на «завтра» для зрителя, когда сервер (часовой пояс, локальный для актива или комната, хранящаяся в БД), показывает их как «сегодня».
Я хотел бы, чтобы браузер пользователя игнорировал преобразование даты javascript и просто использовал фактическую дату и время, которое передается базой данных.
Однако это происходит даже на очень простом примере:
var date = '2013-02-05';
var newdate = new Date(date);
console.log(newdate); // Mon Feb 04 2013 16:00:00 GMT-0800 (PST)
Похоже, что браузер использует переменную date
как GMT, и когда я создаю из нее объект даты javascript, он преобразует это время по Гринвичу в мое местное время.
В этом случае лучше всего использовать даты по Гринвичу в базе данных и установить смещение местного времени сайта в качестве переменной в javascript, которую затем можно использовать для смещения дат, отображаемых для конечного пользователя, и снова компенсировать полученные даты от конечного пользователя для вставки в базу данных?
Это сбивает с толку, так как существует так много потенциальных ловушек - локаль PHP, локаль mysql или локаль браузера могут повлиять на это и испортить окончательную дату. Любые советы по обеспечению согласованного значения даты приветствуются!