我想为我的项目实现一项功能。它与Stack Overflow上的一个功能非常相似,用户发布请求并获得响应。在Stack Overflow上我们看到帖子标记为4秒前,22秒前,1分钟前,5分钟前等。我想实现相同的。
我将请求发布时间存储在MySQL中的timestamp变量中,然后减去NOW() - stored_time
以获取秒数。然后写一些逻辑,比如
等等。这个长逻辑是用Perl编写的。我想避免这种情况。有没有什么好方法可以达到同样的目的?我愿意改变MySQL表和数据类型。
答案 0 :(得分:2)
向客户端发送经过的秒数,并将其转换为JavaScript中的人类可读文本。
答案 1 :(得分: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