2017-10-21 13 views
1

こんにちは私はPerlのDateTimeを使用して文字列を解析し、それを日付形式に変換しています。ここPerlのDateTimeから2桁の月と日付を取得する

私のコードは次のようになります。

my $parser = DateTime::Format::Strptime->new(pattern => "%Y-%m-%dT%H:%M:%SZ", time_zone => 'UTC', on_error => 'croak'); 
my $startDate = $parser->parse_datetime("2017-04-14T21:00:00Z"); 
my $endDate = $parser->parse_datetime("2017-04-14T23:00:00Z"); 
print $startDate->month(); 

私は月に印刷するとき、私は唯一の4を取得し、または日付が10未満番号に変更された場合、私は一桁の番号を取得します。

10桁未満の数字の前にゼロを付加しないで、2桁の月/日付を取得するクリーナー方法がありますか?

答えて

3

sprintf(またはprintfを使用してください)を使用してください。

my $month = sprintf("%02d", $startDate->month()); 

入力をゼロにします。 formatパラメータの詳細については、the documentationをご覧ください。あなたはおそらく、彼らに

my ($year, $mon, $day) = unpack "A4A2A2", $startDate->ymd(''); 

または

my ($year, $mon, $day) = split '-', $startDate->ymd(); 

が必要になりますよう

2

またDateTime::ymd()と、デフォルトのセパレータは-(ダッシュ)で、それらのすべてを取得することができます。

関連する問題