Автоматически обнаружьте текущее местное время пользователя с JavaScript или PHP

Я надеюсь, что это поможет вам преобразовать оператор выбора в оператор обновления,

UPDATE md5_sums 
SET only_in_old = 'X'

WHERE NOT EXISTS (SELECT *
                  FROM md5_sums newt
                  WHERE file = newt.file
                  and relpath = newt.relpath
                  and newt.starttime = 1551085649.7764235)
and starttime = 1551085580.009046
11
задан Peter Craig 14 May 2009 в 14:17
поделиться

4 ответа

Короче говоря,

Я бы предложил использовать время на стороне сервера и дать пользователю возможность выбирать свой часовой пояс.

Вы могли бы вычислить часовые пояса по умолчанию для пользователей на основе эвристики их IP-адреса, но это чревато ошибкой.

Вы должны иметь возможность извлекать информацию о часовых поясах на стороне клиента с помощью javascript / Ajax, но как и в случае с время само по себе это тоже чревато ошибкой.

Моя рекомендация : разрешите пользователям выбирать свой часовой пояс с разумным значением по умолчанию в зависимости от того, где, по вашему мнению, находятся ваши пользователи.

8
ответ дан 3 December 2019 в 03:37
поделиться

С помощью JavaScript есть способ получить смещение текущего часового пояса пользователя.

new Date().getTimezoneOffset() * -1

возвращает смещение в минутах от GMT. Не сохраняйте это значение, так как оно может меняться в зависимости от летнего времени. Если он вам нужен на сервере (php), вам нужно будет захватить его для отправки.

К сожалению, спецификация HTTP не отправляет часовой пояс пользователя в качестве заголовка, а это то, что потребуется php.

]
12
ответ дан 3 December 2019 в 03:37
поделиться

Я бы посоветовал вам запишите дату сервера в javascript. Затем введите новую дату в javascript, чтобы получить дату, установленную пользователем на его машине. Используйте разные даты.

С серверной датой вы уверены, что ваше время не смещено. Все вычисления должны производиться с использованием даты сервера.

Используйте разницу только для отображения. Это хорошо подходит для редактирования журналов, обратного отсчета и выбора сообщений типа «Доброе утро».

Если пользователь хочет, чтобы его время было чем-то другим ... Я думаю, вы должны позволить ему это.

3
ответ дан 3 December 2019 в 03:37
поделиться

PHP имеет как расширение PECL , так и пакет PEAR , который может выполнять поиск по GeoIP. Предполагая, что пользователь не находится за прокси или NAT какого-либо типа, база данных актуальна и точна, а адрес вообще находится в базе данных, вы можете получить часовой пояс и вычислить смещение от времени сервера.

Или вы можете просто согласиться с тем, что системные часы пользователя не на 100% точны, но обычно очень близки. Во всех основных операционных системах есть способы синхронизации своих часов с сетевыми серверами времени, большинство из которых включены по умолчанию. Если человек решил установить свой компьютер в «неправильном» часовом поясе, вероятно, по какой-то причине (он путешествует, он работает с людьми в другом часовом поясе). Если часы вашего сервера точны (если нет, как сказал HermanD, исправьте их, если вы управляете сервером, пожаловаться, если вы этого не сделаете), но не в правильном часовом поясе, вы всегда можете использовать PHP ini_set () или date_default_timezone_set () , чтобы ваши скрипты работали в GMT, независимо от часового пояса системы.

3
ответ дан 3 December 2019 в 03:37
поделиться
Другие вопросы по тегам:

Похожие вопросы: