私はサインですstrftime("%e %B %Y", 1344557429)
返されますが、 http://php.net/manual/en/function.strftime.phpに従ってfalse
この形式で日付を返す必要があります"10 August 2012"
問題が発生している可能性のあるアイデアはありますか?
私はサインですstrftime("%e %B %Y", 1344557429)
返されますが、 http://php.net/manual/en/function.strftime.phpに従ってfalse
この形式で日付を返す必要があります"10 August 2012"
問題が発生している可能性のあるアイデアはありますか?
最初にマニュアルを読む:
巨大な赤い箱を見つける:
Windows のみ: %e 修飾子は、この関数の Windows 実装ではサポートされていません。この値を実現するには、代わりに %#d 修飾子を使用できます。以下の例は、クロス プラットフォーム互換の関数を記述する方法を示しています。
新しいコードを作成するのは一般的な方法ですが、error_reporting を E_ALL に設定して、エラーを簡単に見つけられるようにします。
単一の日付の使用の場合:
$format = '%B '.((strtoupper(substr(PHP_OS, 0, 3)) == 'WIN') ? '%#d' : '%e').', %Y';
$date = strftime($format, $unix_timestamp);
PHP docs ソリューションは関数として優れています。
function fixed_strftime($format, $unix_timestamp) {
if (strtoupper(substr(PHP_OS, 0, 3)) == 'WIN') {
$format = preg_replace('#(?<!%)((?:%%)*)%e#', '\1%#d', $format);
}
return strftime($format, $unix_timestamp);
}
ああ、@Peter Szymkowskiのおかげで解決策が見つかりました。わたしは目が見えない
<?php
// Jan 1: results in: '%e%1%' (%%, e, %%, %e, %%)
$format = '%%e%%%e%%';
// Check for Windows to find and replace the %e
// modifier correctly
if (strtoupper(substr(PHP_OS, 0, 3)) == 'WIN') {
$format = preg_replace('#(?<!%)((?:%%)*)%e#', '\1%#d', $format);
}
echo strftime($format);
?>