Perl由localtime生成的日期不正确
今天,我发现下面的perl脚本运行不正确。 当前实际日期时间为20140814 13:19 但它返回:2014-7-14-13-19-15(月值7比实际值8小1) 我的操作系统:win7Perl由localtime生成的日期不正确,perl,Perl,今天,我发现下面的perl脚本运行不正确。 当前实际日期时间为20140814 13:19 但它返回:2014-7-14-13-19-15(月值7比实际值8小1) 我的操作系统:win7 sub GetFileNameDate { my ($sec,$min,$hour,$day,$month,$yr19,@rest) = localtime; return sprintf "%s-%s-%s-%02d-%02d-%02d", ($yr19 + 1900), $month,
sub GetFileNameDate {
my ($sec,$min,$hour,$day,$month,$yr19,@rest) = localtime;
return sprintf "%s-%s-%s-%02d-%02d-%02d", ($yr19 + 1900), $month, $day, $hour, $min, $sec;
}
这并不错误,就像月份值从0开始一样
sub GetFileNameDate {
my ($sec,$min,$hour,$day,$month,$yr19,@rest) = localtime;
return sprintf "%s-%s-%s-%02d-%02d-%02d", ($yr19 + 1900), ($month +1), $day, $hour, $min, $sec;
}
$month是月份本身,范围为0..11,0表示一月,11表示十二月
您可以根据以下文档检查正确的:
$mday
是一个月中的一天,$mon
是一个月,范围为0..11
,其中0表示一月,11表示十二月。这样可以很容易地从列表中获取月份名称
但是,为了简化您的目标,我建议您使用:
产出:
2014-08-13-23-42-56
您可能想要
POSIX::strftime
use POSIX qw( strftime );
print strftime "%Y-%m-%d-%H-%M-%S", localtime;
哪里错了?是这个月吗?因为如果是,它是正确的(月份是0..11,而不是1..12,请参阅)。当函数返回一个您怀疑是错误的值时,最明显的下一步是阅读文档?可能是
use POSIX qw( strftime );
print strftime "%Y-%m-%d-%H-%M-%S", localtime;