2012-12-19 2 views
1

Мне было интересно, есть ли какой-либо API/путь/сайт/ссылка, которая обеспечивает правильное время?Всегда получайте правильное время?

Не серверы datetime или клиенты datetime. Я использую datetime, чтобы рассчитывать на мой игровой сайт, когда пользователю пора играть. Пользователи приходят со всего мира, поэтому использование их клиентского времени не будет соответствовать, если это из США в Европу.

Тогда, как правило, я бы использовал серверное время, но почему-то иногда пропускает 1,2 часа? Я хотел бы удостовериться, что everbody делает временную метку из того же источника и что источник всегда прав!

Любые идеи?

+0

http://www.ntp.org/ – DaveRandom

+0

Вы имеете в виду атомное время? Если вы получаете это через сеть (например, в Интернете), всегда будет задержка ... Похоже, вы должны просто настроить свою сеть таким образом, чтобы время нажималось на все серверы от мастера ... – Ben

ответ

0

Во-первых, вы должны использовать UTC в клиенте и в код сервера, чтобы избежать проблем с часовым поясом.

Далее я понимаю вашу проблему так, что не так важно, чтобы время было точно (наносекунды) правильным, тем более важно, что время будет ИМЯ на сервере и клиентах.

Для этого вам понадобится уникальный источник времени UTC для клиентов и серверов. Это должно быть обязательно вашего сервера. Я мог бы предложить использовать ваш сервер как сервер NTP для клиентов. Но предполагая, что вы находитесь в веб-среде, это звучит нецелесообразно.

Поэтому я бы предложил добавить временную метку - время UTC - к каждому сообщению с сервера. Клиентам придется использовать эту метку в качестве ссылки. Additonaly может заставить клиентов периодически обновлять свое время, вызывая ваш сервер.

0

Использование времени вашего сервера прекрасно, просто убедитесь, что правильно получить TimeZones:

$now = new DateTime; 
$now->setTimeZone(new DateTimeZone("Europe/London")); 

Теперь $now будет содержать объект DateTime, правильное время в Лондоне.

PHP отлично справляется с летним временем и необычными пользовательскими событиями времени.

+0

При этом: 'code' $ now = new DateTime; $ now-> setTimeZone (новый DateTimeZone ("Европа/Лондон")); echo 'Now:'. $ Now. '
'; exit, 'code' Я получаю ошибку сервера? Зачем? – Mansa

Смежные вопросы