Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sql-server-2005/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Regex Perl中的日期-时间转换_Regex_Perl_Datetime - Fatal编程技术网

Regex Perl中的日期-时间转换

Regex Perl中的日期-时间转换,regex,perl,datetime,Regex,Perl,Datetime,可能重复: 我有一个来自用户2012/02/10 00:00:00的日期时间,想将其更改为2012-02-10 00:00:00,我知道regex可以做到这一点。有任何模块可以做到这一点吗?一个模块在这方面做得太过分了 (my $iso_date = $slashed_date) =~ s{^(....)/(..)/(..) (..:..:..)\z}{$1-$2-$3 $4}s; 但如果你想要一个,这里有一个: package My::Date::Converter; use Ex

可能重复:


我有一个来自用户
2012/02/10 00:00:00
的日期时间,想将其更改为
2012-02-10 00:00:00
,我知道regex可以做到这一点。有任何模块可以做到这一点吗?

一个模块在这方面做得太过分了

(my $iso_date = $slashed_date) =~
   s{^(....)/(..)/(..) (..:..:..)\z}{$1-$2-$3 $4}s;
但如果你想要一个,这里有一个:

package My::Date::Converter;

use Exporter qw( import );
our @EXPORT = qw( date_converter );

sub date_converter {
   my ($slashed_date) = @_;
   (my $iso_date = $slashed_date) =~
       s{^(....)/(..)/(..) (..:..:..)\z}{$1-$2-$3 $4}s;
   return $iso_date;
}

1;
但是,如果您想浪费大量CPU,现有的模块可以做到这一点:

use DateTime::Format::Strptime qw( );

my $slashed_format = DateTime::Format::Strptime->new(
   pattern  => '%Y/%m/%d %H:%M:%S',
   on_error => 'croak',
);

my $iso_format = DateTime::Format::Strptime->new(
   pattern  => '%Y-%m-%d %H:%M:%S',
   on_error => 'croak',
);

my $iso_date = $iso_format->format_datetime(
   $slashed_format->parse_datetime($slashed_date)
);
使用
tr

perl -le '$_="2012/02/10 00:00:00";tr|/|-|;print'

-1:你的问题似乎有武断的(即无法解释的)限制。克洛索托#11903