アプリ版:「スタンプのみでお礼する」機能のリリースについて

はじめまして
Perlで日付形式の変換をしたいと思っています。
RFC1123形式(2 Mar 2006 04:28:25 -0800)から
yyyy/mm/dd hh:mm:ssの形式に変換したいのです。
色々と調べましたが、適当なヒントがあるところがありません
でした。
どうぞ、関連サイトでも構いませんので、ご回答お願いいたします。

A 回答 (5件)

 正規表現で分解して、月の名前だけ連想配列で置き換えるのが一番早いと思いますよ。


 俺はそうしました。

 yyyy/mm/dd hh:mm:ss 形式を time 関数の値に変換するロジックなら提供できますよ。
    • good
    • 0
この回答へのお礼

ご返答が遅くなり申し訳ありません。

助かりました。
後のご回答にCPANモジュールのものを頂いたので、
そちらで試してみたいと思っています。

でも、助かりました。
ありがとうございました。

お礼日時:2006/03/06 15:02

# 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";
}
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。

わざわざ、例を掲載していただきありがとうございます。

私も一時期は正規表現で考えようかと思ったのですが・・・

でも、勉強になりました。
ありがとうございます。

お礼日時:2006/03/06 15:04

ちょっと検索したら、こんなのが見つかりました。



HTTP::Date - 日付変換ルーチン

既に見られてるかもしれませんが。

参考URL:http://homepage3.nifty.com/hippo2000/perltips/HT …
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。

この頁は見ました。
使える!と思ったのですがモジュールのダウンロード頁への
リンクが死んでたので、諦めました。

ありがとうございました。

お礼日時:2006/03/06 15:05

# 微妙に違うバージョン。



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
    • good
    • 1
この回答へのお礼

ご回答、ありがとうございます。

正規表現は苦手なので勉強になりました。
ありがとうございます。

お礼日時:2006/03/06 15:05

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
    • good
    • 0
この回答へのお礼

ご返事が遅くなり申し訳ありません。
回答あいりがとうございます。

私もCPANモジュールを探してみたんですが、この
モジュールは見つけることができませんでした。

調べが甘いですね・・・・(汗)

本当に助かりました。
試して見ます。ありがとうございます。

お礼日時:2006/03/06 15:00

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!