1

ユーザーが使用している国に応じて日付形式を変更しようとしています。

現在、私はこれを思いついた:

function format_date($date = '', $format=null)
    {
        if($date == "0000-00-00") return "";
        $DateTime = new DateTime($date);
                if(!$format){
                    $CI =& get_instance();
                    switch($CI->session->userdata("country")){
                        case 3:
                            $format = "d-m-Y H:i:s";
                        break;
                        default:
                            $format = "Y-m-d H:i:s";
                        break;
                    }
                }
                return $DateTime->format($format);
    }

ただし、$date の形式が次の場合:

2013-03-15 15:50:30

出力を次のようにしたい:

15-03-2013 15:50:30

フォーマットが次の場合:

2013-03-15

出力を次のようにしたい:

2013 年 3 月 15 日

それ以外の:

15-03-2013 00:00:00

引数の形式が何のためにあるのか知りたいのであれば、私はそれを形式に強制しようとしています。

編集:

2013-04-12 16:52 だけが必要な場合もあります。

そして、ここでもフォーマットできるはずです:/

4

5 に答える 5

0

日付形式を確認した後に試すこともできます

$d = '2013-03-15 15:50:30';
$d2 = '2013-03-15';

function myFormatDate($d){
    $format = 'd-m-Y';
    if(count(explode(' ',$d)) > 1)
        $format = 'd-m-Y H:i:s';
    return date($format, strtotime($d));
}

var_dump(myFormatDate($d));
var_dump(myFormatDate($d2));
于 2013-04-18T13:37:01.180 に答える
0

少しハックなソリューションですが、次を使用できます。

$date = $DateTime->format($format);

if (strpos($date, '00:00:00')) {

    $date = substr($date, 0, strpos($date, '00:00:00') - 1);
}

return $date;

日付に 00:00:00 が含まれている場合は、文字列のその部分を削除し- 1、日付と時刻の間のスペースを計算します。

于 2013-04-18T13:42:28.217 に答える