DVK*_*DVK 3 perl datetime epoch
是否有5.005中的perl核心模块可以将纪元秒转换为可打印的日期时间?
我们的系统有DateTime.pm,但需要该功能的脚本仍然在Perl 5.005上,并且不可能将其升级到5.6+(不要问.由于非技术原因,只能做完).DateTime.pm - 至少我们的版本 - 需要5.6.
因此,我需要以下之一:
理想情况下,Perl 5.005核心中的模块可将时期秒转换为日期/时间字符串.优选地,以YY/MM/DD hh:mm:ss格式但不是必需的.
如果失败了,5.005兼容的非XS模块会将纪元秒转换为日期/时间字符串.优选地,以YY/MM/DD hh:mm:ss格式但不是必需的.
强烈倾向于在Perl 5.005发布时在CPAN上具有此功能的模块(这种方式似乎是在公司现有的CPAN模块集中)
Sod*_*ved 11
根据CPAN,POSIX模块可用.所以你可以使用这个strftime功能.这是我在5.8.8中一直使用的
use POSIX();
my $time_t = 1234567890;
my $txt = POSIX::strftime( "%Y-%m-%d %T", localtime($time_t) );
print "$txt\n";
Run Code Online (Sandbox Code Playgroud)
给
2009-02-14 10:31:30
Run Code Online (Sandbox Code Playgroud)
查看核心例程localtime和gmtime(也time).
恕我直言,编写一个小的子程序来进行这种格式化通常比引入新的依赖项更容易.例如:
sub epoch_to_datetime {
my $time = shift(@_) || time();
my ($s, $m, $h, $md, $mo, $yr) = localtime($time);
my $date = join("/",
sprintf("%02d", $yr % 100),
sprintf("%02d", $mo + 1),
sprintf("%02d", $md));
my $time = join(":",
sprintf("%02d", $h),
sprintf("%02d", $m),
sprintf("%02d", $s));
return "$date $time";
}
print epoch_to_datetime(time()) . "\n";
# 11/11/09 08:06:10
Run Code Online (Sandbox Code Playgroud)