Вот мой код:
var_dump(strftime("%m-%d-%Y %l:%M:%S", time())); echo "<br />"; var_dump(strftime("%Y-%d-%m %H:%M:%S", time()));
Первая строка возвращает false, а третья возвращает ожидаемую строку '2012-10-09 23:03:18' (length = 19)
Почему первая строка возвращает false?
Я запускаю окна 7×64 и wamp с довольно стандартными настройками.
Если первая строка не работает, а вторая делает, то причина, очевидно, связана с %l
var_dump(strftime("%l", time()));
На самом деле, это ошибки.
Чтение руководства по strftime …
Не все спецификаторы преобразования могут поддерживаться вашей библиотекой C, и в этом случае они не будут поддерживаться PHP strftime (). Кроме того, не все платформы поддерживают отрицательные временные метки, поэтому ваш диапазон дат может быть ограничен не ранее, чем в эпоху Unix. Это означает, что% e,% T,% R и,% D (и, возможно, другие), а также даты до 1 января 1970 г. не будут работать в Windows, некоторых дистрибутивах Linux и нескольких других операционных системах. Для систем Windows полный список поддерживаемых спецификаторов конверсии можно найти на «MSDN».
Поэтому %l
является чистым, который не поддерживается.
Находясь на моем локальном сервере WAMP, я нашел решение для %l
не работает. После исправления %e
, который является %#d
, я тестирую с использованием %#I
течение часа без предшествующего 0, и он работал безупречно. Таким образом, вы можете использовать это ваш код:
var_dump(strftime("%m-%d-%Y %#I:%M:%S", time()));
К сожалению, это не работает в среде linux, оно будет выводить #I вместо часа.