Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: date('H:i:s') ошибается на час
 
 автор: werd   (13.09.2006 в 16:33)   письмо автору
 
 

Почему то .... по какой то непонятной мне причение я получаю время из:


<?php
echo date('H:i:s');
?>


на час больше положеного

кто знает почему?

   
 
 автор: targa   (13.09.2006 в 17:40)   письмо автору
 
   для: werd   (13.09.2006 в 16:33)
 

А это на Вашей машине или на хостинге. Если на хостинге так там у сервера свое время может быть.

   
 
 автор: werd   (13.09.2006 в 17:50)   письмо автору
 
   для: targa   (13.09.2006 в 17:40)
 

Нет. на своей машине.

   
 
 автор: Саня   (13.09.2006 в 17:51)   письмо автору
 
   для: targa   (13.09.2006 в 17:40)
 

Сервер может быть в другой временной зоне.
Посмотрите что даёт вызов date("r"); посмотрите на последние цифры после знака "+". Это временная зона, на которую настроен сервер. Сравните в зоной на вашей машине.

   
 
 автор: werd   (13.09.2006 в 17:54)   письмо автору
 
   для: Саня   (13.09.2006 в 17:51)
 

щас проверю,

а если так то как настроить это?

   
 
 автор: werd   (13.09.2006 в 17:55)   письмо автору
 
   для: Саня   (13.09.2006 в 17:51)
 

мда...вы правы!

Wed, 13 Sep 2006 17:53:03 +0300
а должно быть
Wed, 13 Sep 2006 17:53:03 +0200

   
 
 автор: Саня   (13.09.2006 в 18:52)   письмо автору
 
   для: werd   (13.09.2006 в 17:55)
 

На компьютере настраивается выбором зоны в выпадающем списке: панель управления -> дата и время -> часовой пояс.
Если нужно изменить время, выдаваемое сервером просто уменьшите время на час:
date("H:i:s", time()-3600);

   
 
 автор: werd   (13.09.2006 в 18:59)   письмо автору
 
   для: Саня   (13.09.2006 в 18:52)
 

да я в курсе как настроить часовой пояс на компьютере...

да и с функцией всё понятно...

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

на компьютере установленно +2

скрипт

date("r");

выдаёт +3

и для того что бы не прибегать к

date("H:i:s", time()+3600);


я хочу поправить положение

   
 
 автор: Саня   (13.09.2006 в 19:12)   письмо автору
 
   для: werd   (13.09.2006 в 18:59)
 

<?php
date_default_timezone_set
("Europe/Kiev");

Но эта функция доступна только в PHP5. Если используете PHP4 прийдётся отнимать время или выбрать хостинг, сервера которого настроены на +2.

   
 
 автор: werd   (13.09.2006 в 19:23)   письмо автору
 
   для: Саня   (13.09.2006 в 19:12)
 

ой... работать то работает,

но зона изменятеся только на сеанс загрузки

в дополнение ... у меня PHP 5

   
 
 автор: Саня   (13.09.2006 в 19:30)   письмо автору
 
   для: werd   (13.09.2006 в 19:23)
 

Измените значение параметра date.timezone в php.ini на нужное.

   
 
 автор: werd   (13.09.2006 в 19:34)   письмо автору
 
   для: Саня   (13.09.2006 в 19:30)
 

заменил. точнее добавил.

date_default_timezone_get()

выдаёт то что надо

но для

date('H:i:s');

не помогло

   
 
 автор: Саня   (13.09.2006 в 19:39)   письмо автору
 
   для: werd   (13.09.2006 в 19:34)
 

А вы веб-сервер перезагрузили после вмешательства в php.ini?

   
 
 автор: werd   (13.09.2006 в 19:45)   письмо автору
 
   для: Саня   (13.09.2006 в 19:39)
 

да

   
 
 автор: Саня   (13.09.2006 в 19:50)   письмо автору
 
   для: werd   (13.09.2006 в 19:45)
 

А что вы написали в date.timezone?
Должно быть что-то вроде того:
...
[Date]
; Defines the default timezone used by the date functions
date.timezone = "Europe/Kiev"
...

   
 
 автор: werd   (13.09.2006 в 20:54)   письмо автору
 
   для: Саня   (13.09.2006 в 19:50)
 


[Date]
; Defines the default timezone used by the date functions
date.timezone = "Asia/Jerusalem"

   
 
 автор: werd   (13.09.2006 в 18:44)   письмо автору
 
   для: werd   (13.09.2006 в 16:33)
 

так как же мне перенастроить временную зону ?

   
 
 автор: werd   (14.09.2006 в 17:43)   письмо автору
 
   для: werd   (13.09.2006 в 16:33)
 

До сих пор лажит... Хочу исправить... Нужна помощь

   
 
 автор: Саня   (14.09.2006 в 19:26)   письмо автору
 
   для: werd   (14.09.2006 в 17:43)
 

При тех же самых настройках у меня всё нормально меняется. При установке на "Asia/Jerusalem" зона смещается на +3, при возвращении к "Europe/Moscow" - +4; Не забывайте про существование летнего времени, когда все часовые пояса дополнительно смещаются на +1.

   
 
 автор: werd   (15.09.2006 в 00:19)   письмо автору
 
   для: Саня   (14.09.2006 в 19:26)
 

да но если брать в учёт летнее время для "Asia/Jerusalem" ссылаясь на
time.windows.com то получится не +1 а -1

на данный момент у нас разница с Москвой на 1 час

   
 
 автор: Саня   (15.09.2006 в 03:18)   письмо автору
 
   для: werd   (15.09.2006 в 00:19)
 

> ...сылаясь на time.windows.com...
Откуда вы взяли этот сайт? Насколько я понял вам нужно настроить сервер на восточноевропейскую часовую зону. Ссылаясь на википедию, могу с уверенностью сказать, что в Иерусалиме на данный момент +3 (летнее время). В Москве +4.

> на компьютере установленно +2
> скрипт
> date("r");
> выдаёт +3

Судя по всему у вас на компьютере неправильно настроен часовой пояс (если вы живёте в часовой зоне Иерусалима), а с сервером всё впорядке, ибо +3 для часового пояса Иерусалима - это нормально (с марта по октябрь), тогда как +2 устанавливается в октябре (и, как несложно догадаться, снова меняется на +3 в марте).
http://ru.wikipedia.org/wiki/Летнее_время
Точное время в Москве.
Точное время в Иерусалиме.

Если хотите, чтобы на сервере было +2, то вам надо установить что-нибуть из центральноевропейской зоны, например "Europe/Paris".

   
 
 автор: werd   (15.09.2006 в 13:17)   письмо автору
 
   для: Саня   (15.09.2006 в 03:18)
 

time.windows.com- сайт автоматического обновления системных часов от MS.

время настроенно правильно, а также часовой пояс ..и в php.ini и на самой ОС.да не хочу я устанавливать Париж, с таким же успехом можно было бы использовать time() - 3600, я хочу разобратся в ошибке, и исправить её.

может ли это быть из за того что сервер автоматически добовляет летнее время?есть ли функция добовления летнего времени в часовую зону?

   
 
 автор: Саня   (15.09.2006 в 14:26)   письмо автору
 
   для: werd   (15.09.2006 в 13:17)
 

> я хочу разобратся в ошибке, и исправить её.
Разве я не достаточно полно написал в чём ваша ошибка?

> может ли это быть из за того что сервер автоматически добовляет летнее время?
Как раз из-за того, что ваш компьютер не перешёл на летнее время, а сервер сделал эту поправку, вы и получаете разное время на сервере и на компьютере.

> есть ли функция добовления летнего времени в часовую зону?
PHP делает это автоматически.

[i]> time.windows.com- сайт автоматического обновления системных часов от MS.

А вы пробовали зайти на этот "сайт"?

   
 
 автор: werd   (15.09.2006 в 14:49)   письмо автору
 
   для: Саня   (15.09.2006 в 14:26)
 

time.windows.com нет, не пробывал, но часы он выстанавливает правильно :-) покрайней мере минуты, и секунды, у него тоже есть ошибка на час, причём вовсех поясах.

Как раз из-за того, что ваш компьютер не перешёл на летнее время, а сервер сделал эту поправку, вы и получаете разное время на сервере и на компьютере

да, вы правы, если перевести время на ноябрь, я получаю правильное время.

но я тогда непонимаю что мне делать в этом случае ведь получается что сервер вычесляет летнее время неправильно?

и что же тогда-> ?

если (летнее время){
return ( time() - 3600)
}
иначе{
return default
}
?

как правильно поступить в этом случае?

Очень признателен вам САНЯ, за вашт ответы, и потраченое время.Большое спасибо!

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования