假设我从某个包含日期的地方读取字符串,并且它的日期格式不会缩写月份。是否有一个模块可以处理读取,然后将其输出到我选择的任何格式?我已经快速浏览了CPAN,我看到的每个日期模块似乎都没有适应未缩短的月份。
感谢您的帮助
编辑: 举个例子,假设我们有一个像这样的字符串; “1988年2月2日”。现在我们要将其转换为“1988-02-02”(YYYY-MM-DD)。
答案 0 :(得分:6)
您可以使用核心Time::Piece模块及其strptime
方法。格式在strftime man page上描述,对于完整月份名称,有%B
格式说明符:
use Time::Piece;
my $dt = Time::Piece->strptime("2 February 1988", "%d %B %Y");
print $dt->ymd,"\n";
答案 1 :(得分:4)
my $dt = DateTimeX::Easy->new('2 February 1988');
print $dt->date();
1988-02-02
答案 2 :(得分:1)
我总是使用Date :: Parse,因为它可以自动检测输入格式并使用“str2time”将其转换为unix时间。如果我想格式化日期,我使用“strftime”。
use Date::Parse;
use POSIX 'strftime';
$unix_time = str2time "2 February 1988";
print strftime "%Y-%m-%d", localtime $unix_time;
答案 3 :(得分:-1)
您应该编写自己的转换模块。
您可以使用哈希进行如下快速转换:
我的%month =(“Jan”=>“01”, “Feb”=> “02”, “Mar”=> “03”, “Apr”=> “04”, “May”=> “05”, “Jun”=> “06”, “Jul”=> “07”, “Aug”=> “08”, “Sep”=> “09”, “Oct”=> “10”, “Nov”=> “11”, “Dec”=> “12”);
我的%day =(“太阳”=>“01”, “Mon”=> “02”, “星期二”=> “03”, “温”=> “04”, “星期四”=> “05”, “星期五”=> “06”, “周六”=> “07”);