Perl:如何知道 24 小时是不是已过?

Posted

技术标签:

【中文标题】Perl:如何知道 24 小时是不是已过?【英文标题】:Perl: how to know if 24hrs have passed?Perl:如何知道 24 小时是否已过? 【发布时间】:2014-03-01 08:04:54 【问题描述】:

我在 mysql 表上有一个时间戳字段,我想知道该时间戳是否为 24 小时或更长时间。在 Perl 中最好的方法是什么?

【问题讨论】:

这完全取决于数据库负载,无论您是使用数据库上的工具还是 perl 进程中的工具。下面有一些很好的答案。 【参考方案1】:

返回 24 小时前时间戳的 SQL。

SELECT UNIX_TIMESTAMP(NOW() - INTERVAL 24 HOUR) 

现在如果你的时间戳是

【讨论】:

【参考方案2】:

最好的办法是让数据库来完成这项工作。示例见SQL statement to select all rows from previous day。

【讨论】:

如果您只是添加一些简单的SQL作为示例,这将是一个更好的响应【参考方案3】:

通过时间戳,我假设它是 Unix 时间戳,即自纪元以来的秒数。

my $ts       = 1393662619;
my $day_24hr = 24 * 60 * 60;    ## seconds in 24 hrs

my $prev_time = time() - $day_24hr;    ## 24hours ago

if ( $ts < $prev_time ) 
    print "timestamp is 24 hour old";

【讨论】:

似乎是个好方法,但我不明白你的 $ts 吗?它是一个mysql数据类型“时间戳”,格式是(即)1970-01-31 00:00:00 它按预期工作,但我必须添加代码以将 mysql 时间戳转换为 unix 时间戳【参考方案4】:

您可以为此使用localtime

($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime($unix_timestamp);

【讨论】:

然后你自己建立时间戳?

以上是关于Perl:如何知道 24 小时是不是已过?的主要内容,如果未能解决你的问题,请参考以下文章

java 如何给得到的时间加 8小时

由于 DST 时钟向前,perl DateTime 和不存在的时间用户输入

一个域名是用哪里的DNS来解析的,电脑怎么知道找哪一个DNS呢? 我注册域名的时候会在服务商那里配置DNS解析,一般需要24小时后才能访问,我想知道,解析后的这个数据是不是会同步到世界上所有的

使用 MySql 和 Websocket 协议在 Perl 中创建一个小时

将12小时制改为24小时制

如何确定 iPhone 设置为 12 小时还是 24 小时时间显示?