date () и strftime () не совпадают в Windows и Linux. Зачем? - PullRequest
2 голосов
/ 09 января 2010

Почему некоторые опции для date() и strftime() не поддерживаются в Windows? Хотя все, что связано с date , должно поддерживаться каждой системой. Это из-за способа хранения даты внутри?

Ответы [ 2 ]

6 голосов
/ 09 января 2010

В руководстве о дате () отмечены два различия:

  • Временные метки использовались в Windows от 1970 до 2038 до PHP 5.1.0.
  • Согласно комментарию пользователя, переключатель микросекунд нельзя использовать в Windows.

и для strftime ():

Не все спецификаторы преобразования могут поддерживаться вашей библиотекой C, и в этом случае они не будут поддерживаться strftime () PHP. Кроме того, не все платформы поддерживают отрицательные временные метки, поэтому ваш диапазон дат может быть ограничен не ранее эпохи Unix. Это означает, что% e,% T,% R и% D (и, возможно, другие), а также даты до 1 января 1970 года не будут работать в Windows, некоторых дистрибутивах Linux и некоторых других операционных системах. Для систем Windows полный обзор поддерживаемых спецификаторов преобразования можно найти на »MSDN.

это то, что вы имеете в виду? Ну, причины там уже объяснены, нет поддержки отрицательных временных меток. Я не думаю, что с этим можно многое сделать.

Если это вызывает у вас проблемы, вы можете использовать библиотеку, такую ​​как Zend_Date .

0 голосов
/ 09 января 2010

Это потому, что date и strftime - это просто тонкие обертки для базовых системных функций, поэтому они принимают только те функции, которые поддерживает операционная система.

http://linux.die.net/man/3/strftime
http://msdn.microsoft.com/en-us/library/fe06s4ak%28VS.71%29.aspx

...