What is the best way to convert yyyymmddhhmmss to YYYY-MM-DD hh:mm:ss and back in perl?
for example: 20130218165601 to 2013-02-18 16:56:01 and back? (can https://metacpan.org/module/Rose::DateTime do it)?
without regexp, if possible ;)
A module is overkill for this.
# Packed -> ISO
(my $iso_date = $packed_date) =~
s/^(....)(..)(..)(..)(..)(..)\z/$1-$2-$3 $4:$5:$6/s;
# ISO -> Packed
(my $packed_date = $iso_date) =~
s/^(....)-(..)-(..) (..):(..):(..)\z/$1$2$3$4$5$6/s;
Rose::DateTime cannot parse the "packed" format as intended, but you could use DateTime::Format::Strptime.
use DateTime::Format::Strptime qw( );
my $packed_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',
);
# Packed -> ISO
my $iso_date = $iso_format->format_datetime(
$packed_format->parse_datetime($packed_date)
);
# ISO -> Packed
my $packed_date = $packed_format->format_datetime(
$iso_format->parse_datetime($iso_date)
);
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With