| トップページ |

2009.08.02

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)残念ですね。

2009.08.02 午後 12:10 [Perl] | |

トラックバック

この記事のトラックバック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)

コメントを書く