#!/usr/bin/perl -- use strict; use warnings; use DateTime::Format::Strptime; my( @strp ) = ( DateTime::Format::Strptime->new( pattern => '%Y%m%d', ), DateTime::Format::Strptime->new( pattern => '%Y%j', ) ); for my $yyyymmdd ( qw[ 20050526 20040401 20060201 ]){ my $yyyydoy = $strp[0]->parse_datetime($yyyymmdd); print "$yyyymmdd # $yyyydoy # ", $strp[1]->format_datetime($yyyydoy),$/; } __END__ 20050526 # 2005-05-26T00:00:00 # 2005146 20040401 # 2004-04-01T00:00:00 # 200492 20060201 # 2006-02-01T00:00:00 # 200632