8

これは、日付を取得するために使用するコードです (スペイン語):

$fecha = strftime("%d de %B, %Y, a las %l:%M %p");

そして私は得る:

27 de julio, 2011, a las 7:10

質問は、私の PM (または AM) はどこですか?

私のアプリケーションは Linux で実行されています。

4

11 に答える 11

2

で別の値を使用してみることができます。setlocale()es_MXには機能しませんが、仕事をするためです。とes_COをサポートしています。サーバーの構成に依存します:v%p%P

可能な値のリスト

于 2016-01-28T00:49:19.287 に答える
2

あなたはOSXを使っていますか?サポートされている場合、%pまたは%P サポートされていない場合

于 2011-07-28T00:45:02.063 に答える
0

シンプルで醜い

$date="2016-11-15 12:34";    
$fecha=strftime("%A, %d de %B de %Y %l:%M", strtotime("$date")).date(' a', strtotime("$date"));

結果: martes、2016 年 11 月 15 日 12:34 午後

于 2016-11-16T04:00:10.507 に答える
0

@iyepes のおかげで、サイトが複数の言語である場合、ロケールを完全にバイパスすることにしました。%P または %p は、英語以外のロケールではどちらも価値がないと思います。少なくともスペイン語の場合はそうです。

%P または %p をロケールから分離します。while ループがある場合は、ロケールを en_US に設定し、%P を含む en_US strftime で時刻を抽出してから、ユーザーが定義したロケールに戻します。

$day1 =  strtotime($row["day1"]);
$day2 = strtotime($row["day2"]);
$day3 = strtotime($row["day3"]);

  setlocale(LC_ALL, "en_US");

$time1 = strftime("%l:%M %P", $day1);
$time2 = strftime("%l:%M %P", $day2);
$time3 = strftime("%l:%M %P", $day3);

  setlocale(LC_ALL, $defined_locale);

$day1 - strftime("%d de %B, %Y, " $day1).$time1;
$day2 - strftime("%d de %B, %Y, " $day2).$time2;
etc...
于 2014-08-26T17:01:55.263 に答える
0

私の解決策

function mystrftime($format, $time=null){
    if(!$time) $time = time();
    preg_match_all('/%[a-zA-Z]/', $format, $placeholders);
    foreach ($placeholders[0] as $placeholder){
        if(strftime($placeholder, $time)==''){
            $format = str_replace($placeholder, '%'.$placeholder, $format);
        }
    }   
    $format = strftime($format, $time);
    preg_match_all('/%[a-zA-Z]/', $format, $placeholders);
    $locale = setlocale('LC_TIME', '0');
    setlocale('LC_TIME', 'en_US.UTF8');
    foreach ($placeholders[0] as $placeholder){
        $format = str_replace($placeholder, strftime($placeholder, $time), $format);
    }   
    setlocale('LC_TIME', $locale);
    return $format;
}
于 2015-01-06T05:00:45.413 に答える