9

在 Perl 中,localtime需要一个 Unix 时间戳并返回年/月/日/小时/分钟/秒等。我正在寻找相反的localtime:我有零件,我想从它们构建一个 unix 时间戳。

4

3 回答 3

17

您可以在Time::Local CPAN 模块中使用 timelocal 函数。

姓名

Time::Local - 从本地时间和 GMT 时间有效地计算时间

概要

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

描述

该模块提供了与内置 perl 函数 localtime() 和 gmtime() 相反的函数。它们将日期作为六元素数组接受,并返回自系统纪元以来的相应 time(2) 值(以秒为单位)(例如,Unix 上 1970 年 1 月 1 日午夜,格林威治标准时间)。此值可以是正值或负值,尽管 POSIX 只需要支持正值,因此系统纪元之前的日期可能不适用于所有操作系统。

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

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

于 2009-03-02T20:12:46.877 回答
10

POSIX::mktime

于 2009-03-02T19:48:19.307 回答
7

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

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

于 2009-03-02T19:51:29.470 回答