2011-07-11 8 views
3

私はタイムスタンプをとり、相対的な文字列ベースの日付、おそらく逆のstrtotimeを生成する関数を構築しようとしています!PHPは午後2時に昨日などのメッセージに日付を変換する - 逆のstrtotime

Yesterday at 2pm 
Yesterday at 3:15pm 
Earlier Today at 9am 
Today at 12pm 
Today at 12:45pm 
Tomorrow at 5pm 
Monday at 9pm 
Sunday at 12:55am 
All dates older than a week: 
Thu 7th Jul 

私は現在以下のコードを持っていますが、それを改善する方法が不思議でしたか?それは非常に効率的なように見えず、いくつかの機能が欠けています。何を追加しますか?

static public function timestampRelativeString($timestamp, $rounding=900) { 
    if(!self::isValidTimeStamp($timestamp)) 
     return "Invalid Timestamp"; 

    //Round to (default) 15 mins 
    $timestamp = floor($timestamp/$rounding)*$rounding; 

    //Today 
    if($timestamp<mktime(0, 0, 0, date("m"), date("d")-1, date("y"))) 
     return date("D jS M", $timestamp); 
    elseif($timestamp<mktime(23, 59, 59, date("m"), date("d")-1, date("y"))) 
     return "Today at ".date("G:i", $timestamp); 
    elseif($timestamp<time())) 
     return "Earlier today at ".date("G:i", $timestamp); 
    elseif($timestamp<mktime(23, 59, 59, date("m"), date("d"), date("y"))) 
     return "Today at ".date("G:i", $timestamp); 
    elseif($timestamp<mktime(23, 59, 59, date("m"), date("d")+1, date("y"))) //Tomorrow 
     return "Tomorrow at ".date("G:i", $timestamp); 
    elseif($timestamp<mktime(23, 59, 59, date("m"), date("d")+7, date("y"))) //Next Week 
     return "On ".date("l", $timestamp)." at ".date("G:i", $timestamp); 
    else 
     return date("D jS M", $timestamp); 
    } 

既にこれを行うスクリプトを知っている人はいますか?または非常に似ていますか?お時間を

多くのおかげで、

+1

うわー。逆のstrtotime、クール。 (+1) – cwallenpoole

答えて

3

これはnicetimePrettyDateを含む多くの名前を持っています。それを行う最善の方法は、IDまたはクラスを識別するdiv/spanでPHPからの実際の時間を出力し、javascriptを使用してクライアント側を後処理します(ユーザーがページに座っている時間を更新することができます) 。

とにかく、あなたの質問には、私はあなたがFacebookやTwitterなどで見るもののような(または正確に)prettydate処理クラスを見ています。機能にマッチする。

+0

素敵な時が私のために少し曖昧だったので、このスクリプトを書いて、名前に関する情報に感謝します! –

関連する問題