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

  • Автор темы Автор темы camka
  • Дата начала Дата начала

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
 
а это совпадает или нет?

PHP:
echo date("Y-m-d", strtotime("last Monday", mktime("0", "0", "0", 03, 31, 2003, 0)));
 
интересно, что локально тоже показывал 23.03.2003 (воскресенье), а при смене 31 марта на 30-е всё отрабатывало нормально...
 
[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.
 
si, я об этом и написал в первом сообщении, но причина не в этом - и с нулем, и с единицей были одинаково неправильные результаты. И потом, я если поменять время на что-то вроде 10:00, то разница в час не должна выливаться в разницу в день.

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

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

(и на всякий случай всё-таки проверь то, что писал в первом сообщении :))
 
Это может быть связано с тем. что в ночь с 30 на 31 марта происходит переход на летнее время.
 
с putenv("TZ=Greenwich"); все нормализуется. Но можно ли в етом быть уверенным? и время также сдвигается на 2 часа. неудобно.

PHP:
echo date("Y-m-d", strtotime("last Monday", mktime("0", "0", "0", 03, 31, 2003, 0)));
ничего не изменило
 
Все правильно, т.к. Greenwich Mean Time не подтвержено переводу на летнее время, поэтому в в выставлении TZ=Greenwich можно быть уверенным, если только англичане не начнут переходить на летнее время.
 
Точно не будут переводить часы UTC. А GMT -- вилами на воде писано. :) В этом и заключается основная разница между ними. :)
 
Сверху