За последние 24 часа нас посетили 17507 программистов и 1673 робота. Сейчас ищут 1977 программистов ...

Вывод времени date()

Тема в разделе "Прочие вопросы по PHP", создана пользователем Sleven, 23 июл 2006.

  1. Sleven

    Sleven Активный пользователь

    С нами с:
    18 июл 2006
    Сообщения:
    99
    Симпатии:
    0
    Адрес:
    Сургут
    Функция date(), выводящая текущую дату, время, берет значения с компа, с которого запущен скрипт. У меня сайт на московском хостинге, а сам я в ХМАО, т.е. местное время можно вывести прибавив к московскому +2 часа.
    С часами не проблема, другое дело число. Когда у нас в Сургуте уже чуть больше полуночи (т.е. начался следующий день), скрипт все еще показывает вчерашний день (то есть московское время).
    Конечно, можно в коде задать условие, проверяющее, что если сейчас от 00 час 00 мин до 01 час 59 мин 59 сек, то "текущее число += 1 день", но может есть другой более практичный способ? Просто ведь цикл нельзя ограничить просто "+1 день", прийдется предусмотреть ситуацию последнего дня в месяце, последнего дня в годе, тогда еще "+1 месяц", "+1 год" соответственно, а это соответственно вычисление кол-ва дней в месяце, проверка "високосного года", т.е. вроде бы небольшой код форматирования даты превращается уже в такой нехиленький листинг.
    Корректная дата мне нужна не просто для того, чтобы просто вывести ее пользователю, с ней связана регистрация пользователей в системе, дата последнего посещения, а так же (!) шифрование пароля пользователя и сопоставление его с тем, что имеется на сервере в базе данных MySQL (хэш-значение пароля меняется каждые сутки).
     
  2. X-Cray

    X-Cray Активный пользователь

    С нами с:
    10 июл 2006
    Сообщения:
    255
    Симпатии:
    0
    Адрес:
    Москва
    Тебе нужна постоянная дата г.Сургута, можешь писать

    Код (Text):
    1.  
    2. date("d.m.Y H:i:s", time()+3600*2);
    По-моему, должно работать без каких-либо несовпадений.

    А для большей уверенности можешь считать дату относительно Гринвича, прибавляя 5 часов:

    Код (Text):
    1.  
    2. function tdate($mask, $addhrs=0, $addmins=0)
    3. {
    4.  return gmdate($mask, $addhrs*3600+$addmins*60+time());
    5. }
    6.  
    7. echo tdate("d.m.Y H:i:s", 5);
    P.S. php не учитывает лишние часы зимнего/летнего времени.
     
  3. Sleven

    Sleven Активный пользователь

    С нами с:
    18 июл 2006
    Сообщения:
    99
    Симпатии:
    0
    Адрес:
    Сургут
    X-Cray благодарю!
     
  4. Shtogrin

    Shtogrin Активный пользователь

    С нами с:
    21 июн 2006
    Сообщения:
    25
    Симпатии:
    0
    Адрес:
    Kiev
    (PHP 5 >= 5.1.0RC1)
    date_default_timezone_set( string timezone_identifier ) -- Sets the default timezone used by all date/time functions in a script
     
  5. Stingwel

    Stingwel Активный пользователь

    С нами с:
    12 сен 2006
    Сообщения:
    3
    Симпатии:
    0
    Подскажите плиз.
    А как сделать что б скрипт автоматом учитывал разницу GMT?
    Т. е. на сайт могут заходить люди с разных стран, и скрипт соответственно всем показывал время исходя из страны посетителя.

    Или может быть кто подскажет как сделать вывод времени в нескольких часовых поясах.
    Например:
    Сечас в Москве - хх:хх
    Сейчас в Берлине - хх:хх
     
  6. Davil

    Davil Guest

    Кто-нибудь слышал про локали?