0

英国の日付と時刻を次の形式に変換する最良の方法は次のとおりです。

30/01/2013 13:30:06

これは、相対的な時間に対する PHP 表記の d/m/YH:i:sです (つまり、ちょうど今、数分前、30 分前、3 時間前、1 日前など)。この件に関するいくつかのチュートリアルを見てきましたが、それらはすべて、明確な説明なしで関数を作成することを中心に展開しています。この件について何かお役に立てば幸いです。

4

5 に答える 5

4

お役に立てれば

function timeSince($ptime){
        $etime = time() - strtotime($ptime);

        if( $etime < 1 ){
            return 'less than 1 second ago';
        }

        $a = array( 12 * 30 * 24 * 60 * 60  =>  'year',
                    30 * 24 * 60 * 60       =>  'month',
                    24 * 60 * 60            =>  'day',
                    60 * 60             =>  'hour',
                    60                  =>  'minute',
                    1                   =>  'second'
        );

        foreach( $a as $secs => $str ){

            $d = $etime / $secs;     
            if( $d >= 1 ){

                $r = round( $d );
                return ' <font style="color:#0099ff"> ' . $r . ' ' . $str . ( $r > 1 ? 's' : '' ) . ' ago</font>';
            }
        }
    }
于 2013-02-06T09:17:34.067 に答える
2

使用mktime();してdate();

たとえば、特定の時間が の形式 d/m/Y H:i:sであり、それを にしたい場合d-m-Y H:s:iは、時間を使用してチャンクに分解しexplode();、次に使用しますdate(new_format, mktime(current_format_chunks))

于 2013-02-06T09:17:32.370 に答える
2

カスタム関数を作成すると役立つ場合があります。文字列を切り取り、数値に変換します。mktime() を使用してタイムスタンプを作成し、それを time() 現在のタイムスタンプと比較して、さまざまな相対時間の可能性を切り替えます (ケース)。

于 2013-02-06T09:17:52.620 に答える
1

dd/mm/yyyyフォーマット規則dd.mm.yyyyに従って変更する必要があります。そうでない場合は、次のように扱われます。mm/dd/yyyy

$dateString = '30/01/2013 13:30:06';
$dateObject = new DateTime(str_replace('/', '.', $dateString));

オプションで、DateTime コンストラクターの 2 番目の引数としてDateTimezoneを追加します。

次に、現在の日付との差分を作成し、 dateintervalsを使用して相対時間を取得できます。

于 2013-02-06T09:17:30.323 に答える
1

日付を解析する最も簡単で使いやすい方法は、DateTime拡張機能です。と呼ばれる静的メソッドがありますcreateFromFormat

$date   = '30/01/2013 13:30:06';
$format = 'j/m/Y G:i:s';
$time   = DateTime::createFromFormat($format, $date);
echo $time->format('l dS F \'y at H.i.s');

このメソッドは、カスタム形式と日付文字列を取ります。形式は自分で定義できるため、「手動で」解析するよりもはるかに簡単です。

日付を調整するには、、およびメソッドを使用add()できsub()ますmodify()

$time->add(new DateInterval('P3DT5H')); // 3 days and 5 hours
echo $time->format('l dS F \'y at H.i.s');

$time->sub(new DateInterval('P9DT1H')); // 9 days and 1 hours
echo $time->format('l dS F \'y at H.i.s');

$time->modify('-1 year -35 days');
echo $time->format('l dS F \'y at H.i.s');

ご覧のとおり、このmodify()方法は少し使いやすいです。他の 2 つのメソッドは、DateIntervalクラスと厄介な形式を使用します。難しいことではありませんが (ドキュメントを読んでそのとおりに実行するだけです)、実際の言葉 (つまり、「-3 日 -7 時間」) を使用すると理解しやすくなります。

于 2013-02-06T09:23:25.650 に答える