linux - Perl获取UTC时间并获取UTC时间戳之间的差异

标签 linux perl bash shell

我正在寻找有关如何正确执行此操作的一些 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); 

一如既往,我们非常感谢和重视您的帮助。

最佳答案

  1. 范式错误。 Unix 机器不“在东部时间运行”或“在太平洋时间运行”。 Unix 机器在“自纪元以来的秒数”上运行,并有一个默认时区,用于向用户表示时间值。一旦您理解了这一点,许多其他有用的东西就会免费获得。

  2. 您可以使用“date -u”让“date”返回 UTC 时间

  3. Perl 的 time内置函数返回自纪元以来的秒数(没有时区)。然后,您可以使用 Perl 的 gmtime 将其转换为 UTC Y-M-D-H-M-S 值内置功能。来电 gmtime没有任何参数实际上与 gmtime(time) 相同。

  4. 使用 DateTime::Format::MySQL解析 MySQL 日期/时间值。您还可以找到 DateTime有用。另请参阅 http://datetime.perl.org/

关于linux - Perl获取UTC时间并获取UTC时间戳之间的差异,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9165572/

相关文章:

linux - 链接器找不到 Ogre 库

linux - 统计bash中可执行文件的数量

perl - Moose 两次应用方法修饰符

perl - 为什么在使用 Mechanize 获取文件时会收到内部服务器错误?

linux - 是否有更改终端透明度的命令?

linux - 如何从 Linux From Scratch(LFS) 安装 LiveCD?

perl - 更高 ping 网络上的 Net::SSH2

bash - 从字符串中查找并替换大写字符并保留原始匹配项

linux - 使用 gnu parallel 执行 for 循环

java - 如何在 Linux 上从 shell 脚本运行 java 代码