Time :: Piece返回错误的值

时间:2014-01-28 07:38:17

标签: perl

我正在尝试使用Time::Piece模块将日期从yymmdd转换为YYYY-MM-DD。输入为Nov 31, 2000 (20001131)时,输出为2000-12-01。实际上,Nov 31甚至不存在。

use Time::Piece;
my $dt_str = Time::Piece->strptime('20001131', '%Y%m%d')->strftime('%Y-%m-%d');
print $dt_str;

我在这里错过了什么吗?

1 个答案:

答案 0 :(得分:1)

在内部,它只进行粗略的验证和错误报告,然后执行与POSIX :: mktime相同的转换;超过一个月结束的任何日子只会使它将生产日期提前到下个月。这似乎有点不一致;因为它允许这几天,我也希望它将'20005931'视为'2004-12-01',但它错误了。