Perlのプログラミングネタ。
文章中に含まれるラフな日付表記を抜き出し、 2008/06/02 のような「4桁/2桁/2桁」の フォーマットに直す処理。
対象にしているのは「3/5」のような「月/日」と、 「2008/5/2」のような「年/月/日」。年が欠落 している場合はプログラム実行時の年を挿入する。
チョイと修正するだけで「6月5日」を拾い上げて 「2008-06-05」にしたりと、いろんなフォーマットに 対応できるのでご利用アレ。
---------- $ENV{'TZ'} = "JST-9"; ($sec, $min, $hour, $mday, $mon, $year, $wday) = localtime(time); $year += 1900;
$str =~ s/(\d{4})\/(\d{1,2})\/(\d{1,2})/&formatA;/eg; $str =~ s/([^\/0-9]|^)(\d{1,2})\/(\d{1,2})/&formatB;/eg;
sub formatA { @date = split(/\//,$&); $fix = sprintf("%04d/%02d/%02d", $date[0], $date[1], $date[2]); return($fix); }
sub formatB { $fix = sprintf("%02d/%02d", $2, $3); $fix = $1 . $year . "/" . $fix; return($fix); } ----------
|