0

DateTime を年、月、日、時間、分、秒に変換する必要があります。yahoo の質問が 5 週間前、または 1 年前または 1 か月前のように、私の日付は次のようにデータベースに保存されます2011-11-30 05:25:50

PHPで年、月、日、時間、分、秒のように表示したいのですが、年、日、時間、分、秒のようhow much year, how many months , days, hours, minutes, secondsに時間単位を1つだけ表示する必要があります。

これについて検索しましたが、これを行う方法がわかりません。スタック オーバーフローに関するこのトピックには多くの質問があることはわかっています。重複している可能性がありますが、問題を解決できません。

前もって感謝します。

4

4 に答える 4

2

私はいつもこの機能を使用してきました:

function when($datetime) {   

    define("SECOND", 1);
    define("MINUTE", 60 * SECOND);
    define("HOUR", 60 * MINUTE); define("DAY", 24 * HOUR);
    define("MONTH", 30 * DAY); $delta = time() - strtotime($datetime);

    // convert

    if($delta < 1 * MINUTE) { return $delta == 1 ? "one second ago" : $delta." seconds ago"; }
    if($delta < 2 * MINUTE) { return "a minute ago"; } if($delta < 45 * MINUTE) { return floor($delta / MINUTE)." minutes ago"; }
    if($delta < 90 * MINUTE) { return "an hour ago"; } if($delta < 24 * HOUR) { return floor($delta / HOUR)." hours ago"; }
    if($delta < 48 * HOUR) { return "yesterday"; } if($delta < 30 * DAY) { return floor($delta / DAY)." days ago"; }
    if($delta < 12 * MONTH) { $months = floor($delta / DAY / 30); return $months <= 1 ? "one month ago" : $months." months ago"; }
    else { $years = floor($delta / DAY / 365); return $years <= 1 ? "one year ago" : $years." years ago"; }

}

echo when(YOUR DATE HERE) は、相対時間の最適な形式を返します。これは、日、時間、またはそれほど前でない場合は秒単位である可能性があります。

于 2013-09-17T18:49:06.677 に答える
0

preg_split を使用してこれを分割してみてください。

次のようなものを試してください

$output = preg_split( "/ (-| |:) /", $input );

これにより、最初の要素が年、2 番目が月などの配列が得られます。

于 2013-09-17T18:48:06.717 に答える