我正在寻找有关如何正确执行此操作的一些 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);
一如既往,我们非常感谢和重视您的帮助。
最佳答案
范式错误。 Unix 机器不“在东部时间运行”或“在太平洋时间运行”。 Unix 机器在“自纪元以来的秒数”上运行,并有一个默认时区,用于向用户表示时间值。一旦您理解了这一点,许多其他有用的东西就会免费获得。
您可以使用“date -u”让“date”返回 UTC 时间
Perl 的
time
内置函数返回自纪元以来的秒数(没有时区)。然后,您可以使用 Perl 的gmtime
将其转换为 UTC Y-M-D-H-M-S 值内置功能。来电gmtime
没有任何参数实际上与gmtime(time)
相同。使用 DateTime::Format::MySQL解析 MySQL 日期/时间值。您还可以找到 DateTime有用。另请参阅 http://datetime.perl.org/
关于linux - Perl获取UTC时间并获取UTC时间戳之间的差异,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9165572/