- ベストアンサー
日付形式の変換
はじめまして Perlで日付形式の変換をしたいと思っています。 RFC1123形式(2 Mar 2006 04:28:25 -0800)から yyyy/mm/dd hh:mm:ssの形式に変換したいのです。 色々と調べましたが、適当なヒントがあるところがありません でした。 どうぞ、関連サイトでも構いませんので、ご回答お願いいたします。
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
CPAN Date::Manip モジュールを使うといいかも ---------------------------------------------------------------- use Date::Manip; Date_Init("TZ=JST"); $RFC1123 = "2 Mar 2006 04:28:25 -0800"; $date = ParseDate($RFC1123); if( !$date){ print "error"; } else { print UnixDate($date,"%Y/%m/%d %H:%M:%S"); } #result>2006/03/02 21:28:25
その他の回答 (4)
- SE-1
- ベストアンサー率57% (26/45)
# 微妙に違うバージョン。 use strict; my $rfc_date = '2 Mar 2006 04:28:25 -0800'; my %months = ("Jan"=>'01', "Feb"=>'02', "Mar"=>'03', "Apr"=>'04', "May"=>'05', "Jun"=>'06', "Jul"=>'07', "Aug"=>'08', "Sep"=>'09', "Oct"=>'10', "Nov"=>'11', "Dec"=>'12'); if (my @fulldate=$rfc_date=~/(\d{1,2})\s(\w{3})\s(\d{4})\s(\d{2}:\d{2}:\d{2}).+/){ my ($day,$month,$year,$time)=@fulldate; $day = "0$day" if length $day==1; my $date = "$year/$months{$month}/$day $time"; print "date=$date\n"; } # 出力: date= 2006/03/02 04:28:25
お礼
ご回答、ありがとうございます。 正規表現は苦手なので勉強になりました。 ありがとうございます。
- osamuy
- ベストアンサー率42% (1231/2878)
ちょっと検索したら、こんなのが見つかりました。 HTTP::Date - 日付変換ルーチン 既に見られてるかもしれませんが。
お礼
ご回答ありがとうございます。 この頁は見ました。 使える!と思ったのですがモジュールのダウンロード頁への リンクが死んでたので、諦めました。 ありがとうございました。
- SE-1
- ベストアンサー率57% (26/45)
# deagle さんのおっしゃったことを実行しただけですが・・・ use strict; my $rfc_date = '2 Mar 2006 04:28:25 -0800'; my %months = ("Jan"=>1, "Feb"=>2, "Mar"=>3, "Apr"=>4, "May"=>5, "Jun"=>6, "Jul"=>7, "Aug"=>8, "Sep"=>9, "Oct"=>10, "Nov"=>11, "Dec"=>12); if ($rfc_date=~/(\d{1,2})\s(\w{3})\s(\d{4})\s(\d{2}:\d{2}:\d{2}).+/){ my $date = "$3/$months{$2}/$1 $4"; print "date=$date\n"; }
お礼
ご回答ありがとうございます。 わざわざ、例を掲載していただきありがとうございます。 私も一時期は正規表現で考えようかと思ったのですが・・・ でも、勉強になりました。 ありがとうございます。
正規表現で分解して、月の名前だけ連想配列で置き換えるのが一番早いと思いますよ。 俺はそうしました。 yyyy/mm/dd hh:mm:ss 形式を time 関数の値に変換するロジックなら提供できますよ。
お礼
ご返答が遅くなり申し訳ありません。 助かりました。 後のご回答にCPANモジュールのものを頂いたので、 そちらで試してみたいと思っています。 でも、助かりました。 ありがとうございました。
お礼
ご返事が遅くなり申し訳ありません。 回答あいりがとうございます。 私もCPANモジュールを探してみたんですが、この モジュールは見つけることができませんでした。 調べが甘いですね・・・・(汗) 本当に助かりました。 試して見ます。ありがとうございます。