filemtime отличается от значения в свойствах windows

drwhite1

Новичок
Приветствую.
В некоторых случаях filemtime показывает время на час позже, чем в свойствах файла. В этих же случаях fileatime и filectime показывают правильное время. В чем может быть причина?
win7x64, apache 2.4.25 x64 VC15, php 7.1.8 VC14 x64 Thread Safe, php.ini: date.timezone = Europe/Moscow
 

SXdevel

Новичок
date_default_timezone_set('Etc/GMT-3');
Именно число пропишите, я не Europe/Moscow
 

fixxxer

К.О.
Партнер клуба
Ага, а если опять введут летнее время, код менять?
Лучше разобраться, где часовые пояса настроены неправильно.
 

SXdevel

Новичок
Ага, а если опять введут летнее время, код менять?
Лучше разобраться, где часовые пояса настроены неправильно.
А это подарок от ДАМа с его переводом времени. Так что если снова не введут перевод времени, то править код не придется
 

drwhite1

Новичок
Благодарю, действительно, при установке date.timezone = Etc/GMT-3 все показывает одинаково. Но.

Тогда что получается: есть, допустим, два файла и два варианта настроек:
1. при date.timezone = Europe/Moscow дату изменения первого файла пхп и виндовс отображают одинаково, а второго по-разному (пхп показывает на час больше).
2. при date.timezone = Etc/GMT-3 и пхп и виндовс оба файла отображают одинаково.

Вопрос: чего я не понимаю? Первый-то файл отображается одинаково при любых настройках => где-то внутри второго файла сидит поправка на час. Или нет? Где собака зарыта? Можно, конечно, забить болт: работает — и пусть работает, но очень хочется докопаться до сути)
 

fixxxer

К.О.
Партнер клуба
А какой именно там timestamp?

Если достаточно старый, и соответствует тем временам, когда Europe/Moscow был GMT+4, то, полагаю, php как раз показывает правильно, а винда - нет. ;)

Чтобы точно узнать, найди способ прочитать UTC timestamp напрямую из ntfs. Я виндой не пользуюсь, так что без понятия. Для начала можно посмотреть, что отдаст php-шный stat(), но я не уверен, что там в случае винды нет никаких предварительных конвертаций.
 
Последнее редактирование:

SXdevel

Новичок
Благодарю, действительно, при установке date.timezone = Etc/GMT-3 все показывает одинаково. Но.

Тогда что получается: есть, допустим, два файла и два варианта настроек:
1. при date.timezone = Europe/Moscow дату изменения первого файла пхп и виндовс отображают одинаково, а второго по-разному (пхп показывает на час больше).
2. при date.timezone = Etc/GMT-3 и пхп и виндовс оба файла отображают одинаково.

Вопрос: чего я не понимаю? Первый-то файл отображается одинаково при любых настройках => где-то внутри второго файла сидит поправка на час. Или нет? Где собака зарыта? Можно, конечно, забить болт: работает — и пусть работает, но очень хочется докопаться до сути)
Отключить автоматическое переключение на летнее время в винде, откорректировать время, все станет на свои места
 

drwhite1

Новичок
Если достаточно старый, и соответствует тем временам, когда Europe/Moscow был GMT+4, то, полагаю, php как раз показывает правильно, а винда - нет.
Есть нюанс: некоторые из них — фотографии, в которых сохранился exif, так вот там время правильное и совпадает с тем, что показывает винда =)

Отключить автоматическое переключение на летнее время в винде, откорректировать время, все станет на свои места
Так и было, других вариантов вроде нет


Ландо, в любом случае всем спасибо, главное, что все работает как надо, с остальным посмотрим)
 

AnrDaemon

Продвинутый новичок
У вас винда палёная и не установлены обновления TZdata.
 

AnrDaemon

Продвинутый новичок
Повторяю - проблема в винде… У вас не стоят обновления часовых поясов.
 
Сверху