Правила     Закладки     Карма    Календарь    Журналы    Помощь    Поиск    PDA    Чат   
        СМС-ки
   
Пейджер выключен!
 
Фильтр авторов:    показать 
  скрыть
  Ответ в темуСоздание новой темыСоздание опроса

> Неккоректное отображение через date()
Dizzy  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Старик
***

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 119
Пользователь №: 27864
На форуме: 5 лет, 6 месяцев, 18 дней
Карма: 1




Доброго времени суток!

Есть такой запрос:
$time = time()+3600*3;
query("UPDATE `table` SET `time_end`='$time'");


То есть к текущему времени я прибавляю 3 часа.
В другом месте вывожу сколько осталось:

echo date("H часов, i минут.",intval($p[time_end]-time()));

Результат получаю на 3 часа больше чем нужно. В чем дело?

Если выполнить код:
$date1 = date("d.m.y H:i", time());
echo $date1;

то всё работает корректно
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
AllesKlar  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 3375
Пользователь №: 38635
На форуме: 2 года, 11 месяцев, 5 дней
Карма: 170




Потому что, ты отправляешь 10800 секунд с начала эпохи Юникс, а это
1 января 1970 00:00:00 GMT
А функция date() работает с твоей локалью.
Вот на столько часов, на сколько у тебя смещение от GMT (Гринвич, Лондон), больше и получаешь (Москва +3 часа).


--------------------
[продано копирайтерам]
PMПисьмо на e-mail пользователю
    1   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Dizzy  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Старик
***

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 119
Пользователь №: 27864
На форуме: 5 лет, 6 месяцев, 18 дней
Карма: 1




Цитата (AllesKlar @ 19.11.2014 - 16:52)
Потому что, ты отправляешь 10800 секунд с начала эпохи Юникс, а это
1 января 1970 00:00:00 GMT
А функция date() работает с твоей локалью.
Вот на столько часов, на сколько у тебя смещение от GMT (Гринвич, Лондон), больше и получаешь (Москва +3 часа).

как быть? вычитать по 3 часа каждый раз?
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
vital  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



int main(){printf("Hello World"); return 0;"}
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 2476
Пользователь №: 20247
На форуме: 6 лет, 11 месяцев, 8 дней
Карма: 63




Цитата (Dizzy @ 19.11.2014 - 21:46)
Цитата (AllesKlar @ 19.11.2014 - 16:52)
Потому что, ты отправляешь 10800 секунд с начала эпохи Юникс, а это
1 января 1970 00:00:00 GMT
А функция date() работает с твоей локалью.
Вот на столько часов, на сколько у тебя смещение от GMT (Гринвич, Лондон), больше и получаешь (Москва +3 часа).

как быть? вычитать по 3 часа каждый раз?

ПРиводить сначала все время в UTC и все операции математические делать в UTC.
А перед выводом пользователю уже приводить к его часовому поясу.


--------------------
"Нужно быть готовым прислушиваться к тем, кто может тебя чему-нибудь научить. Иначе ты никогда не вырастешь."

Откровенно я никому ниразу не нагрубил. А дать подзатыльник зарвавшемуся юнцу, так это и ему на пользу, и мне в удовольствие. © AllesKlar
PMПисьмо на e-mail пользователюСайт пользователяICQ
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
AllesKlar  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 3375
Пользователь №: 38635
На форуме: 2 года, 11 месяцев, 5 дней
Карма: 170




Ты можешь вместо time() использовать strtotime(date('H:i')) - получишь тоже самое, что и time(), но с уетом локали


--------------------
[продано копирайтерам]
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
  Быстрый ответ
Информация о Госте
Введите Ваше имя
Кнопки кодов
Для вставки цитаты, выделите нужный текст и
НАЖМИТЕ СЮДА
Введите сообщение
Смайлики
:huh:  :o  ;) 
:P  :D  :lol: 
B)  :rolleyes:  <_< 
:)  :angry:  :( 
:unsure:  :blink:  :ph34r: 
     
Показать всё

Опции сообщения  Включить смайлики?
 Включить подпись?
 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:

Опции темы Ответ в темуСоздание новой темыСоздание опроса