Joh*_*0te 1 regex perl datetime type-conversion
我已经非常努力地使用Perl正则表达式找到这种特定转换(这些日期格式)的示例,但无济于事.有人可以帮我转换这些格式之间的日期吗?
Dec 26 2012 12:00AM ==> 201212126
Run Code Online (Sandbox Code Playgroud)
以下是我最初的尝试,但它运行得太慢(很明显,我使用了5次这样的子系统,这很荒谬).
# Format the input time to yyyymmdd from 'Dec 26 2012 12:00AM' like format.
sub formatTime($)
{
#Get passed in value of format 'Dec 26 2012 12:00AM'.
my $col = shift;
if (substr($col, 4, 1) eq " "){
substr($col, 4, 1) = "0";
}
return substr($col, 7, 4).$months{substr($col, 0, 3)}.substr($col, 4, 2);
}
Run Code Online (Sandbox Code Playgroud)
注意:这是为了工作,用于将输入文件转换为非常大的数据库提取,不幸的是,平台上不支持python,这是我编写脚本的首选语言.我尝试制作自己的Perl正则表达式,但我没有时间阅读并在做其他部分时弄明白.昨天我已经浪费了大部分时间编写Perl脚本并在其余部分学习,这种转换只需要花费太长时间.
Pav*_*sov 19
我建议你使用模块DateTime + DateTime :: Format :: Strptime.
#!/usr/local/bin/perl
use strict;
use DateTime;
use DateTime::Format::Strptime;
my $strp = DateTime::Format::Strptime->new(
pattern => '%b %d %Y %l:%M%p',
locale => 'en_US',
);
# convert date to
my $date = 'Dec 26 2012 10:10AM';
my $dt = $strp->parse_datetime( $date );
printf "%s -> %s\n", $date, $dt->strftime("%Y-%m-%d %H:%M");
Run Code Online (Sandbox Code Playgroud)
产量
Dec 26 2012 10:10AM -> 2012-12-26 10:10
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1025 次 |
| 最近记录: |