【问题标题】:What's the opposite of the localtime function in Perl?Perl 中 localtime 函数的对立面是什么?
【发布时间】:2009-03-02 19:41:34
【问题描述】:

在 Perl 中,localtime 采用 Unix 时间戳并返回年/月/日/小时/分钟/秒等。我正在寻找 localtime 的反面:我有零件,我会喜欢用它们构建一个 unix 时间戳。

【问题讨论】:

    标签: perl timestamp


    【解决方案1】:

    您可以在Time::Local CPAN 模块中使用 timelocal 功能。

    名字

    Time::Local - 高效计算时间 从当地时间和格林威治标准时间开始

    概要

    $time = timelocal($sec,$min,$hour,$mday,$mon,$year);
    $time = timegm($sec,$min,$hour,$mday,$mon,$year);
    

    描述

    该模块提供的功能 是内置 perl 的倒数 函数 localtime() 和 gmtime()。 他们接受日期作为六元素 数组,并返回对应的 time(2) 以秒为单位的值 系统纪元(1 月 1 日午夜, 例如 1970 GMT 在 Unix 上)。这 值可以是正数或负数, 虽然 POSIX 只需要支持 正值,所以日期之前 系统的时代可能不适用于所有 操作系统。

    值得特别画 注意预期范围 提供的值。的价值 月中的一天是实际的一天(即 1..31),而月份是自一月以来的月数(0..11)。这 与返回的值一致 来自 localtime() 和 gmtime()。

    注意: POSIX::mktime 只是 C 库的 mktime() 函数的包装器。 Time::Local 是一个纯 Perl 实现,并且总是返回匹配 Perl 的localtime 的结果。此外,Time::Local 提供gmtime,而mktime 仅适用于当地时间。 (好吧,您可以尝试更改 $ENV{TZ},但这在某些系统上不起作用。)

    【讨论】:

    • 我不知道 Time::Local 和 POSIX::mktime 之间存在什么差异(如果有的话),但我一直使用 Time::Local 并且从未遇到任何问题.
    • 注意:Perl 的 localtime 只是 C 库的 localtime 或 localtime_r 函数的包装,并且总是返回匹配 C 的 mktime 的结果。 :)
    • 嗯,有一个补丁可以让 Perl 的本地时间 y2038 安全,即使你的 C 库的版本不是。我认为它还没有默认集成,但很可能会集成。它修复了 Time::Local,但我认为它不会修补 POSIX::mktime。
    【解决方案2】:

    【讨论】:

      【解决方案3】:

      DateTime 在 CPAN 上可能会有一些用处。它还具有很多时间操纵/翻译方法。

      只需使用您的部件创建 DateTime 并调用 $datetime->formatter("%s") ;

      【讨论】:

      • 是的。如有疑问,请使用 DateTime —— One True Perl 时间系统。在笨拙的日期/时间工具之间来回切换真是太糟糕了。
      猜你喜欢
      • 2015-07-01
      • 2016-08-19
      • 1970-01-01
      • 2012-02-14
      • 2013-06-22
      • 1970-01-01
      • 2015-09-23
      • 1970-01-01
      相关资源
      最近更新 更多