2

私はサインですstrftime("%e %B %Y", 1344557429)

返されますが、 http://php.net/manual/en/function.strftime.phpに従ってfalseこの形式で日付を返す必要があります"10 August 2012"

問題が発生している可能性のあるアイデアはありますか?

4

3 に答える 3

4

最初にマニュアルを読む:

巨大な赤い箱を見つける:

Windows のみ: %e 修飾子は、この関数の Windows 実装ではサポートされていません。この値を実現するには、代わりに %#d 修飾子を使用できます。以下の例は、クロス プラットフォーム互換の関数を記述する方法を示しています。

新しいコードを作成するのは一般的な方法ですが、error_reporting を E_ALL に設定して、エラーを簡単に見つけられるようにします。

于 2012-09-01T18:07:48.257 に答える
2

単一の日付の使用の場合:

$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);
}

ソース: http://codeitdown.com/php-strftime-e-on-windows/

于 2013-08-29T03:30:04.080 に答える
0

ああ、@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);
?>
于 2012-09-01T18:08:59.747 に答える