PHP出力英文日時の安全方法(RFC 1123フォーマット)


最近のプロジェクトでは、クライアントをレスサービスに書き込むために、署名検証は、HTTP_Headerの中でRFC 1123フォーマットのDateを生成する必要がある。
この問題は比較的解決しやすいです。簡単にPHP文書を見て、gmstriftmeという関数を使って解決できます。

string gmstrftime ( string $format [, int $timestamp = time() ] )
で呼び出されたコードは以下の通りです。

echo gmstrftime("%a, %d %b %Y %T %Z",time());
// :Tue, 01 Apr 2014 16:16:07 GMT
でデバッグ中に発見されたのです。他のコンピュータで出力は予想通りの結果ではないことが分かりました。以下のコマンドを使って現在のシステムにインストールされている言語を確認できます。

, 01  4 2014 16:20:02 GMT
では分析したばかりの結果、setlocallを英語に強制的に指定すれば大丈夫です。コードは以下の通りです。USという言葉がありますが、en_があります。US.UTF-8です。この時の心理はドラムを打って、このような方法はあまり安全ではありませんようで、私はコードの取引先の機を運行することを確定することができなくて、結局en_があります。USはまだen_がありますUS.UTF-8です。また、ドキュメントの中の一段のcommentsまではgmdateで代替できます。この関数はsetlocallの結果の影響を受けません。