【发布时间】:2017-06-05 18:25:14
【问题描述】:
use Date::Calc qw(:all);
use Time::Piece;
use POSIX qw(strftime);
$a1 = '01.01.1963';
($year, $month, $day) = Decode_Date_US($a1);
print "$year $month $day\n";
$formatted = strftime('%m/%d/%Y',$month,$day,$year);
print "$formatted\n";
我正在尝试使用 POSIX(strftime) 以一致的格式格式化日期。我不确定输入格式可能是什么。我正在使用 Decode_Date_US 来提取相关的年月日信息。然后我尝试使用 strftime 以一致的方式格式化日期。我收到以下错误 用法:POSIX::strftime(fmt, sec, min, hour, mday, mon, year, wday = -1, yday = -1, isdst = -1) at test_dates.pl line 60
任何帮助将不胜感激。 “use Time::Piece”最终将用于对日期进行排序。
谢谢
【问题讨论】:
-
这种格式不太一致。它和你之前的那个一样。只需使用
/而不是.。 -
@simbabque 提出了一个很好的观点。你所做的就是
s<\.></>g! -
这只是一个测试用例。在实际情况下,我不会事先知道格式是什么?我正在传递 3 个参数(月日年)。我在这里错过了什么?
-
你至少知道日/月/年的顺序吗? (以及年份是 2 位还是 4 位?)因为如果你不这样做,你就会陷入困境 - 10/11/12 本质上是模棱两可的,没有办法解决这个问题。
-
关于“我在这里缺少什么?”,作为工具指针,参数数量错误。它们的顺序也是错误的。您的使用:
strftime(fmt, mon, mday, year)实际使用:strftime(fmt, sec, min, hour, mday, mon, year)。花两秒钟实际阅读您收到的错误消息!!!