Проблемма одного часа (Timestamp)

Discussion in 'PHP' started by #Smith, 14 May 2011.

  1. #Smith

    #Smith New Member

    Joined:
    20 Jun 2010
    Messages:
    96
    Likes Received:
    2
    Reputations:
    0
    То что я попытаюсь изложить в этой теме может показаться на первый взгляд нелепым,
    но мне хотелось бы разобраться в причине.


    Суть проблемы:
    Сам коллапс образовался тогда, когда я попытался вычислить timestamp полуночи текущих суток.
    Рассуждая логически:
    Что такое timestamp?
    -Это количество секунд, прошедших с полуночи 1 января 1970 года по часовому поясу Лондона.
    Значит, количество суток прошедших, с этого момента времени можно определить целочисленным делением текущего timestamp на количество секунд в сутках.
    Количество секунд в сутках = 3600 (секунд в часе) * 24 (часов в сутках) = 8640 (секунд)
    Соответственно количество секунд, прошедших с текущей полуночи должно быть равно остатку от деления текущего timestamp на количество секунд в сутках.
    Но не тут то было:
    PHP:
    $now time();
      
    $sec $now 8640;
    Почему-то, значение получается на 1 час (3600 сек) меньше.
    И именно из-за этого мои дальнейшие вычисления идут неправильно.
    Подскажите, в чём причина коллапса?
     
    #1 #Smith, 14 May 2011
    Last edited: 14 May 2011
  2. -=m@ster=-

    -=m@ster=- New Member

    Joined:
    20 Apr 2011
    Messages:
    8
    Likes Received:
    1
    Reputations:
    0
    Смитто, дружище, ты балбес!
    Сейчас какое время действует?
    Летнее!
    Время на час вперёд.
    Получается, по факту у тебя не GMT+3:00, а GMT+4:00.
    Делай поправку програмно, и будет тебе счастье ;)
     
    #2 -=m@ster=-, 14 May 2011
    Last edited: 15 May 2011
    1 person likes this.
  3. kolored

    kolored New Member

    Joined:
    16 Sep 2009
    Messages:
    18
    Likes Received:
    1
    Reputations:
    0
    Один 0 пропустил. 3600*24=86400
     
  4. kokoulin

    kokoulin Member

    Joined:
    8 Jan 2011
    Messages:
    65
    Likes Received:
    5
    Reputations:
    5
    не в этом суть.
    если время считать по Гринвичу то такой ошибке не должно быть