5

これが私のコードです:

var_dump(strftime("%m-%d-%Y %l:%M:%S", time()));
echo "<br />";
var_dump(strftime("%Y-%d-%m %H:%M:%S", time()));

最初の行はfalseを返し、3番目の行は予想される文字列 '2012-10-09 23:03:18'(長さ= 19)を返します。

最初の行がfalseを返すのはなぜですか?

私はWindows7x64を実行していて、かなりデフォルト設定でWAMPを実行しています。

4

2 に答える 2

5

最初の行が機能しないが2番目の行が機能する場合、その理由は明らかに次の理由によるものです。%l

var_dump(strftime("%l", time()));

確かにウィンドウズでエラーをスローします。

strftimeのマニュアルを読む...

すべての変換指定子がCライブラリでサポートされているとは限りません。その場合、PHPのstrftime()ではサポートされません。さらに、すべてのプラットフォームが負のタイムスタンプをサポートしているわけではないため、日付範囲はUnixエポックより前に制限される場合があります。つまり、%e、%T、%R、%D(および場合によってはその他)(および1970年1月1日より前の日付)は、Windows、一部のLinuxディストリビューション、およびその他のいくつかのオペレーティングシステムでは機能しません。Windowsシステムの場合、サポートされている変換指定子の完全な概要は、»MSDNにあります。

したがって%l、明らかにサポートされていないものです。

于 2012-09-11T03:52:31.420 に答える
3

私のローカルWAMPサーバーでこれに遭遇したとき、私は機能し%lないための解決策を見つけました。の修正に続いて%e、つまり、 0を前に付けずに1時間%#d使用してテストしましたが、問題なく動作しました。%#Iだからあなたはこれをあなたのコードとして使うことができます:

var_dump(strftime("%m-%d-%Y %#I:%M:%S", time()));

残念ながら、これはLinux環境では機能せず、時間ではなく#Iを出力します。

于 2013-01-23T16:17:20.290 に答える