6

請求システムのモジュールを作成するように依頼され、慣れているすべての機能を使用してモジュールを完成させました。これは英語のセットアップでテストされましたが、私は会社が実際に使用しているシステムがフランス語であるという事実を考慮していませんでした(また、私は気づいていませんでした)。

私が書いたコードは...

$due_date = strtotime($next_due_date);
$today = date('Y-m-d');
$today_date = strtotime($today);

if ($due_date > $today_date) {

しかし、私はStrFTimeに慣れておらず、このコードをフランス語ロケールで機能させるためにどのように使用できるのか疑問に思っていますか?

4

2 に答える 2

2

まず、使用する必要がありますsetlocale

setlocale(LC_TIME, "fr_FR");

strtotime次に、日付を文字列または整数として比較するには、ではなくを使用する必要がありstrftimeます。(または、常に文字列をフォーマットで使用できますYYYY-mm-dd

strftime日付を文字列として表すためだけのものです。保存する場合、または操作する場合は、ローカライズされていない標準形式を使用する必要があります。ドキュメントを参照してください

あいまいさの可能性を回避するために、可能な場合はISO 8601(YYYY-MM-DD)の日付またはDateTime :: createFromFormat()を使用することをお勧めします。

したがって、可能なコード

//$next_due_date must be in a standard format like YYYY-mm-dd (but not only)
$due_date = strtotime($next_due_date);
$today_date = time();

if ($due_date > $today_date) {
    echo strftime("%c",$due_date) . " is in the future";
}
于 2013-01-24T12:41:20.273 に答える
-1

簡単で迅速な例を作成しました。お役に立てれば

<?php
        setlocale(LC_ALL, 'fra_fra');

        $today = date('Y-m-d');
        $date_string = utf8_encode(strftime('%d %B %Y', strtotime($today)));
        echo $date_string;
?>
于 2013-01-24T12:35:04.217 に答える