M.C.P.C.

―むり・くり―プラスコミュニケーション(更新終了)


| トップページ |

2009年8月 2日 12:10

TwitterのAPIから得られる日付文字列をPerlのDateTimeでParseする

このエントリーをはてなブックマークに追加 mixiチェック

昨日、自分が書き込んだ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)残念ですね。

投稿 大野 義貴 [Perl] | |

トラックバック(0)

トラックバックURL: http://blog.dtpwiki.jp/MTOS/mt-tb.cgi/2932

コメント(2)

>+0000を認識してくれないというのが(DateTime::Format::HTTPのバージョンは0.37)残念ですね。

RFC822ならDateTime::Format::Mailのほうが良くね?

コメントする