Результаты Ласт Мандэй

camka

не самка
Результаты Ласт Мандэй (strtotime( bug? ))

PHP:
<?php 
 echo date("Y-m-d", strtotime("last Monday", mktime("0", "0", "0", 03, 31, 2003))); 
?>
На некоторых машинах выдает воскресенье 23.03.2003. а на некоторых 24.03.2003 понедельник.

Правильно, естественно, понедельник.

Server: Apache/1.3.27 (Unix) PHP/4.2.3 - дало 2003-03-23 (http://www.zone.ee/kwazimalchik/monday.php)
Server: Apache/1.3.22 (Unix) PHP/4.2.3 - дало 2003-03-24
(http://193.40.244.96/igor/monday.php)
Server: Apache/2.0.39 (Win32) - 2003-03-23
 

Nime

Guest
а это совпадает или нет?

PHP:
echo date("Y-m-d", strtotime("last Monday", mktime("0", "0", "0", 03, 31, 2003, 0)));
 

Nime

Guest
интересно, что локально тоже показывал 23.03.2003 (воскресенье), а при смене 31 марта на 30-е всё отрабатывало нормально...
 

si

Administrator
[m]date[/m]
is_dst can be set to 1 if the time is during daylight savings time, 0 if it is not, or -1 (the default) if it is unknown whether the time is within daylight savings time or not. If it's unknown, PHP tries to figure it out itself. This can cause unexpected (but not incorrect) results.
 

Nime

Guest
si, я об этом и написал в первом сообщении, но причина не в этом - и с нулем, и с единицей были одинаково неправильные результаты. И потом, я если поменять время на что-то вроде 10:00, то разница в час не должна выливаться в разницу в день.

Судя по тому, что пока нашел проблема с timezone, но пока не уверен. По крайней мере, явное выставление timezone (putenv) привело к верным результатам.
 

Nime

Guest
camka, проверь, пожалуйста, меняет ли что-либо добавление первой строкой что-то вроде:
putenv("TZ=Greenwich");

Нет у себя сейчас возможности нигде потестить дополнительно... а мне кажется, что тут под windows свои глюки и не там смотрю в результате.

(и на всякий случай всё-таки проверь то, что писал в первом сообщении :))
 

YRusinov

Филин Ух
Это может быть связано с тем. что в ночь с 30 на 31 марта происходит переход на летнее время.
 

camka

не самка
с putenv("TZ=Greenwich"); все нормализуется. Но можно ли в етом быть уверенным? и время также сдвигается на 2 часа. неудобно.

PHP:
echo date("Y-m-d", strtotime("last Monday", mktime("0", "0", "0", 03, 31, 2003, 0)));
ничего не изменило
 

YRusinov

Филин Ух
Все правильно, т.к. Greenwich Mean Time не подтвержено переводу на летнее время, поэтому в в выставлении TZ=Greenwich можно быть уверенным, если только англичане не начнут переходить на летнее время.
 

Crazy

Developer
Точно не будут переводить часы UTC. А GMT -- вилами на воде писано. :) В этом и заключается основная разница между ними. :)
 

YRusinov

Филин Ух
бЧФПТ ПТЙЗЙОБМБ: Crazy
фПЮОП ОЕ ВХДХФ РЕТЕЧПДЙФШ ЮБУЩ UTC. б GMT -- ЧЙМБНЙ ОБ ЧПДЕ РЙУБОП. :)
б ЕЭЕ TCG Й TCB. :rolleyes: с УБН БУФТПНЕФТЙУФ. лБЛ РТБЧЙМП, GMT ФПЦЕ ОЕ РЕТЕЧПДЙФ ЧТЕНС.
 
Сверху