use*_*364 4 linux bash shell perl
我正在寻找一些关于如何正确执行此操作的Perl帮助.我不介意使用库来做到这一点.
我正在从mySQL数据库中提取UTC时间戳,格式为:2012-02-06 13:50:09
我需要Perl来拉取当前的UTC时间,并在几分钟(或几秒)内获得两个时间戳之间的差异.我在Unix子进程中这样做,但是我很难获得UTC时间并进行比较,因为本地盒子在东部时间运行.我不介意在Unix时间这样做,但不确定如何准确地将UTC时间与"last_timestamp"进行比较,后者是来自mysql的基于UTC的时间戳.
my $date_diff = qx(date -d "\$(date +'%F %T')" +%s) -
qx(date -d "$last_timestamp" +%s);
Run Code Online (Sandbox Code Playgroud)
一如既往,您的帮助肯定受到赞赏和重视.
zgp*_*max 15
范式错误.Unix机箱不"在东部时间运行"或"在太平洋时间运行".Unix框运行"自纪元以来的秒数",并具有默认时区,用于向用户表示时间值.一旦你理解了这一点,许多其他有用的东西都是免费的.
你可以使用'date -u'让'date'返回UTC时间
Perl的time内置函数返回自纪元以来的秒数(没有时区).然后,您可以使用Perl的gmtime内置函数将其转换为UTC YMDHMS值.gmtime没有任何参数调用实际上是相同的gmtime(time).
使用DateTime :: Format :: MySQL来解析MySQL日期/时间值.您可能还会发现DateTime很有用.另请参阅http://datetime.perl.org/