Regex 使用Perl以dd/mm/yy格式输出日期
我想将数据转换成一种格式,这种格式包含一年中存储的月份,如1月、2月、3月。。。etc转换为更标准的格式dd/mm/yy 我正在考虑将与月份相关的文本存储在散列中。结果应该是这样的Regex 使用Perl以dd/mm/yy格式输出日期,regex,perl,hash,Regex,Perl,Hash,我想将数据转换成一种格式,这种格式包含一年中存储的月份,如1月、2月、3月。。。etc转换为更标准的格式dd/mm/yy 我正在考虑将与月份相关的文本存储在散列中。结果应该是这样的 INPUT OUTPUT "DATE,04-Sep-2014" -> "04/09/14" 是自v5.9.5以来的核心模块: use Time::Piece; print localtime ->strptime('DATE,04-Sep-2
INPUT OUTPUT
"DATE,04-Sep-2014" -> "04/09/14"
是自v5.9.5以来的核心模块:
use Time::Piece;
print localtime
->strptime('DATE,04-Sep-2014', 'DATE,%d-%b-%Y')
->strftime('%d/%m/%y');
输出
这将做你需要的事情,而无需求助于任何讨厌的模块
use strict;
use warnings;
print transform_date('DATE,04-Sep-2014');
{
my (%months, $months_re);
sub transform_date {
my ($date_str) = @_;
unless ($months_re) {
@months{qw/ Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec /} = 1 .. 12;
$months_re = join '|', keys %months;
$months_re = qr/(?:$months_re)/;
}
return unless my ($d, $m, $y) = $date_str =~ /(\d\d)-($months_re)-(\d\d\d\d)/;
sprintf '%02d/%02d/%02d', $d, $months{$m}, $y % 100;
}
}
输出
使用一两个。谢谢choroba,但我认为这不是我的解决方案,因为我没有时间::Piece,我也无法安装它,因为脚本需要在多台机器上运行。正如choroba所说,它自2007年以来一直是一个核心模块。你真的不想使用比这个版本旧的Perl。如果你可以安装你的脚本,你可以安装一个模块。它们是同一事物的两个不同名称。@jaypal:是的,我非常喜欢Time::Piece。我在取笑OP的评论,这对我来说不是一个解决方案,因为我没有时间::Piece,我也不能安装它。很多人不明白安装大多数模块只是复制一个pm文件。
use strict;
use warnings;
print transform_date('DATE,04-Sep-2014');
{
my (%months, $months_re);
sub transform_date {
my ($date_str) = @_;
unless ($months_re) {
@months{qw/ Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec /} = 1 .. 12;
$months_re = join '|', keys %months;
$months_re = qr/(?:$months_re)/;
}
return unless my ($d, $m, $y) = $date_str =~ /(\d\d)-($months_re)-(\d\d\d\d)/;
sprintf '%02d/%02d/%02d', $d, $months{$m}, $y % 100;
}
}
04/09/14