在 Perl 中,localtime
需要一个 Unix 时间戳并返回年/月/日/小时/分钟/秒等。我正在寻找相反的localtime
:我有零件,我想从它们构建一个 unix 时间戳。
3 回答
您可以在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}
,但这在某些系统上不起作用。)
CPAN 上的DateTime可能会有一些用处。它还有很多时间操作/翻译方法。
只需使用您的部件创建 DateTime 并调用 $datetime->formatter("%s") ;