TwitterのAPIから得られる日付文字列をPerlのDateTimeでParseする
スポンサードリンク
昨日、自分が書き込んだTwitter発言をtable形式に変換するのをやったのですが、最初、たとえば
http://twitter.com/CLCLCL/status/3062785984
というURLの3062785984が書き込み時刻なんじゃねーかなーと思ったけれどもエポック値じゃないみたいで、いろいろ調べたら
要望をいただいたので、Twitterログまとめ(どんジレ版)に「時刻表示版」を作ったよ!! - どんなジレンマ [d.hatena.ne.jp]
にあるように、
http://twitter.com/status/show/3062785984.xml
で得られるとのことで、3062785984はTwitter全発言の通しのidであり(そういえばこの数字がオーバフローしてクライアントが使えなくなったとかニュースがあったよね)、書き込み日付は上記URLで得られるXMLに書かれているっつーことが判明。なんとか、
Sat Aug 01 01:56:26 +0000 2009
ていう文字列を得ることに成功しました。
さて、これをPerlのDateTimeで日付として理解してもらうためには、以下のようにします。
use strict; use warnings; use DateTime::Format::HTTP; my $timestamp = 'Sat Aug 01 01:56:26 +0000 2009'; $timestamp =~ s|\+0000|GMT|; # DateTime::Format::HTTPは+0000形式のタイムゾーン認識しない my $dt = DateTime::Format::HTTP -> parse_datetime( $timestamp ) # GMTタイムゾーン確定 -> set_time_zone('local'); # 現地時間タイムゾーンへ変換 # 'Asia/Tokyo'のほうが処理速い # http://diary.lampetty.net/20061206.html#p01 # http://blog.livedoor.jp/dankogai/archives/50708234.html print "$dt\n"; exit; __END__
+0000を認識してくれないというのが(DateTime::Format::HTTPのバージョンは0.37)残念ですね。
スポンサードリンク
トラックバック(0)
トラックバックURL: http://blog.dtpwiki.jp/MTOS/mt-tb.cgi/2932
>+0000を認識してくれないというのが(DateTime::Format::HTTPのバージョンは0.37)残念ですね。
RFC822ならDateTime::Format::Mailのほうが良くね?
http://d.hatena.ne.jp/sugyan/20090630/1246291811
Date::Parseでパースできるそうだ。