0

プロジェクトに機能を実装したい。これは、ユーザーがリクエストを投稿してレスポンスを取得するStackOverflowの機能と非常によく似ています。ここスタックオーバーフローでは、4秒前、22秒前、1分前、5分前などのマークが付けられた投稿が表示されます。同じものを実装したいと思います。

リクエストの投稿時刻をMySQLのタイムスタンプ変数に保存し、減算NOW() - stored_timeして秒を取得しています。次に、次のようなロジックを記述します

  • 60秒未満の場合は、60秒前に表示します
  • 60〜3600の差がある場合は、分単位で表示します

等々。この長いロジックはPerlで書かれています。それは避けたい。同じことを達成するための良い方法はありますか?MySQLのテーブルとデータ型を変更できます。

4

2 に答える 2

2

経過秒数をクライアントに送信し、JavaScriptで人間が読めるテキストに変換します。

于 2012-06-08T13:17:17.173 に答える
1

日付スタンプをDateTimeオブジェクトとして取得します。データベースの詳細は表示されないので、回答のそのステップをスキップする必要があります。

use DateTime qw();
use DateTime::Format::Human::Duration qw();

for my $seconds (555, 5555, 555555, 5555555) {
    my $now = DateTime->now;
    my $before = $now->clone->subtract(seconds => $seconds);
    my $formatted = DateTime::Format::Human::Duration
        ->new->format_duration($before - $now);
    $formatted =~ s/(?:,| and).*//;
    print "about $formatted ago\n";
}

# about 9 minutes ago
# about 1 hour ago
# about 6 days ago
# about 2 months ago
于 2012-06-08T13:44:00.847 に答える