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)残念ですね。
トラックバック
この記事のトラックバックURL:
http://app.cocolog-nifty.com/t/trackback/19018/45811096
この記事へのトラックバック一覧です: TwitterのAPIから得られる日付文字列をPerlのDateTimeでParseする:
コメント
>+0000を認識してくれないというのが(DateTime::Format::HTTPのバージョンは0.37)残念ですね。
RFC822ならDateTime::Format::Mailのほうが良くね?
投稿者: otsune (2009/08/02 22:33:21)
http://d.hatena.ne.jp/sugyan/20090630/1246291811
Date::Parseでパースできるそうだ。
投稿者: otsune (2009/08/05 11:52:11)





![森田 創: WEB+DB PRESS 総集編 [Vol.1~60]](http://ecx.images-amazon.com/images/I/51aE58LxWlL._SL75_.jpg)
















![: 電子ルーペ ViewPe[ビューペ] 3R-MSV35 マイクロスコープ デジタル顕微鏡 高機能 低価格 読書 植物 研究 肌チェック](http://ecx.images-amazon.com/images/I/41erkiQgAsL._SL75_.jpg)





![: Optimus bright [docomo L-07C] 対応 予備バッテリー 1500mAh BL-44JN](http://ecx.images-amazon.com/images/I/41gjqsDjq%2BL._SL75_.jpg)










![: パンツの穴 [DVD]](http://ecx.images-amazon.com/images/I/21R9SEY1HPL._SL75_.jpg)

















