Как стать автором
Обновить

Комментарии 37

хорошая подборка, спасибо. Но для навигации уже требуется оглавление, добавите?
Хорошо. Полезно. Грамотно.
Только опечаток полно :-)
Действительно, очень полезная статья, но ИМХО, ничего нового я здесь не узнал...
думаю, даже если ничего нового, статейку можно повесить на стену. когда-нибудь да что-то забудете :)
а материал переводной (фраза "Далее перевод" в начале статьи) или нет? если переводной, почему не указан автор?
>статейку можно повесить на стену
Полностью согласен, уже сделал :)
хотел сначала написать от себя взгляд, потом перевод авторской статьи
Прекрасная подборка. Но всё это касается работы с временной зоной, которая как-то была задана. А вот как узнать временную зону пользователя, кроме прямого вопроса "введите Вашу временную зону"? :-)

Еще никак не могу придумать, как получить временную зону (точнее, часовое смещение в данный момент времени) для точки с заданными координатами. Ведь есть же карта часовых поясов, на которой они описаны довольно простыми кривыми... Теоретически, можно проверять принадлежность точки областям внутри этих кривых, если они где-то заданы...
Сходу - аяксовый запрос времени клиента или геоип. Конечно, на компе может стоять левое время, и человек может сидеть на иностранном провайдере и вообще через прокси, но по-моему, разумно при регистрации показывать юзеру полученное таким(и) способам(и) его же время и спрашивать что-нибудь в духе "нам кажется, у вас щас вот столько-то времени. угадали? ;)" и вариант изменения этого времени. Именно времени! Потому что поиск своего часвого пояса - не такая простая задача для людей, которые с этим не сталкивались или сталкивались, но редко. По времени - удобней.
Ну и верифаить это счастье можно при каждом новом визите, мол, "ой, у вас время сменилось. а хотите его и тут сменить?".
Да, конечно, это время сервера, это ресурсы, запросы и т.д. Но кто тут всё-таки "высшее звено пищевой цепочки (ц)", а? ;)
Как вариант, возможно. Для зарегистрированных пользователей так и буду делать. Даже без верификации. Один раз указал и не надо надоедать пользователю... Если надо — зайдет в настройки и сменит.
Я про аяксовский запрос. ГеоИП уж больно много ресурсов съест, а результат менее надежный, на мой взгляд.
Каких ресурсов? О_О
ГеоИП - это один запрос в базу. Ну и 6 метров данных, конечно, в мускуле-то, но не размеры же БД считать ресурсом =)
привязка к зоне по айпи должна ведь, по идее, довольно точно работать?
Если Вы про первую часть вопроса, то боюсь, что GeoIP съест все ресурсы.

А вот со второй частью что бы придумать..? (Определить часовой пояс по известным географическим координатам.)
Я ошибался насчет GeoIP. Поставил базу от MaxMind, скомпилировал примеры на C и долго удивлялся:

GeoIP City
60000 lookups made in 2.902537 seconds

GeoIP City with GEOIP_INDEX_CACHE
240000 lookups made in 1.788291 seconds

GeoIP City with GEOIP_MEMORY_CACHE
600000 lookups made in 0.934157 seconds

С PHP еще не пробовал, но с СИ всё просто летает. Дело было на VDS (1.5GHz, RAM 512Mb).
на сколько мне не изменяет память, в javascript есть метод какой-то.
Date::getTimezoneOffset
в php - перечисленными ниже способами
>Теперь граница интервала использования данного типа 4 Декабря 292277026596 год
Что же будем делать 5 декабря 292277026596 года? )
то же что и всегда)
седеть на хабре:)
именно седеть :)
Не то что седеть… Разлагаться уже даже не будем, я думаю.
Спасибо. Очень пригодится.
Читается как тематический справочник.
Мать моя женщина...
Скоро напишут фреймворк, зуб даю :)
скорее библиотеку
Библиотека - это уже старо и немодно :)
Должен быть фреймворк, обязательно MVC! :)
Уже. Zend Framework.
Хорошо, вот только КАК автоматически задетектить TimeZone клиента? Где-то видел, что в JavaScript есть функция, дающая офсет браузерной зоны в часах, но это не дает полной стандартной TZ. Кроме того, как показывает практика, показ на сайте локального времени вводит клиента в заблуждение, поскольку он уже привык к "официальному" (напр. московскому) времени. А выводить дату в формате с указанием зоны неэстетично. Поэтому возможным простым решением будет указывать на сайте серверную дату/время.
Мне одному "временная зона" режет глаз? На русский язык "time zone" лучше бы было переводить как "часовой пояс".
Спасибо, мне тоже очень понравилсась статья
НЛО прилетело и опубликовало эту надпись здесь
1) time() - Возвращает количество секунд, прошедших с начала Эпохи Unix (The Unix Epoch, 1 января 1970, 00:00:00 GMT) до текущего времени.
2) http://ru2.php.net/manual/ru/function.gm… пример и комментарии по этой ссылке ответят на все вопросы
1. Верно.
2. gmdate - дата по GMT.
3. Не совсем, вы не учитываете переход на летнее время и еще много чего.

Именно поэтому, чтобы нам не париться с датами, создатели PHP вводят новые функции.
посмотрите на его 3 пункт, он там пишет про время сервера.
Кстати хороший тон держать время на сервере в GMT, в связи с чем программист должен сразу понимать работу с временными зонами
только не забывать до использования strtotime/strftime установить локаль setlocale(), чтобы не получать нотис.
Отличная статья!
спасибо, добавил в мемориз
За это я люблю Хабр: "сидишь, краем мозга думаешь, что очень хорошо бы в проекте предусмотреть то-то или то-то", и +- пару дней появляется заметка по теме - читаешь её, копаешь и используешь знания!

Спасибо!
Ох, может кто-то в курсе,

date_default_timezone_set('Europe/Kiev');
echo date('Y-m-d H:i:s');

Выдает +1 час от правильного времени. tzdata обновил — не помогает :(
Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации