Creazy!

WEBエンジニア・ヤガーのテック・ガジェットブログ

技術情報

速報:Twitter API の日付フォーマットが変わったみたい

投稿日:


※(2007/06/21修正)日付フォーマットが元に戻ったようなのでこのエントリーは不正確な情報となりました。
twitter javascript badge のカスタマイズネタを随分と書いていますが、今日トップページに張ってある badge の日付表示がおかしいので、 badge 内で使用されている user_timeline の json の中身を確認してみました。
すると、あろう事かつぶやき日付(項目名:created_at)のフォーマットが変わっていました。

旧)"Wed Apr 25 12:35:05 +0000 2007"
新)"06/19/2007 12:49:33 UTC"

おいおい、随分と変わったな。public_timelineとかfriends_timelineとかも変わったっぽいので、各種マッシュアップアプリケーションにも影響でるんじゃないか?

javascript badge の対処法

変更されたフォーマットを見ると、むしろJavaScriptが処理しやすいフォーマットになりました。”UTC” の記述もあるので、ブラウザが時差も判断してくれます。
つ・ま・り・前に対応したIE表示不具合の対応は必要なくなりました。
ってか、むしろ例のハックをやめないとうまく表示できません。
下記を参考にして下さい。

function relative_time(time_value) {
//削除
//time_values = time_value.split(" ");
//time_value = time_values[1]+" "+time_values[2]+", "+time_values[5]+" "+time_values[3];
var parsed_date = Date.parse(time_value);
var relative_to = (arguments.length > 1) ? arguments[1] : new Date();
var delta = parseInt((relative_to.getTime() - parsed_date) / 1000);
//削除
//delta = delta + (relative_to.getTimezoneOffset()*60);
if(delta < 60) {
return 'less than a minute ago';
} else if(delta < 120) {
return 'about a minute ago';
} else if(delta < (45*60)) {
return (parseInt(delta / 60)).toString() + ' minutes ago';
} else if(delta < (90*60)) {
return 'about an hour ago';
} else if(delta < (24*60*60)) {
return 'about ' + (parseInt(delta / 3600)).toString() + ' hours ago';
} else if(delta < (48*60*60)) {
return '1 day ago';
} else {
return (parseInt(delta / 86400)).toString() + ' days ago';
}
}

それから、つい最近書いた下記エントリーも変更が必要です。
第8回:Twitter JavaScript Badges の日付フォーマットを自由にカスタマイズ

function relative_time(time_value) {
//削除
//time_values = time_value.split(" ");
//time_value = time_values[1]+" "+time_values[2]+", "+time_values[5]+" "+time_values[3];
var parsed_date = Date.parse(time_value);
var relative_to = (arguments.length > 1) ? arguments[1] : new Date();
var delta = parseInt((relative_to.getTime() - parsed_date) / 1000);
//削除
//delta = delta + (relative_to.getTimezoneOffset()*60);
// 日付情報取得
var dt = new Date();
dt.setTime(dt.getTime() - (delta*1000));
yy = dt.getYear();
mm = dt.getMonth() + 1;
dd = dt.getDate();
dy = dt.getDay();
hh = dt.getHours();
mi = dt.getMinutes();
ss = dt.getSeconds();
if (yy < 2000) { yy += 1900; }
if (mm < 10) { mm = "0" + mm; }
if (dd < 10) { dd = "0" + dd; }
dy = new Array("日","月","火","水","木","金","土")[dy];
if (hh < 10) { hh = "0" + hh; }
if (mi < 10) { mi = "0" + mi; }
if (ss < 10) { ss = "0" + ss; }
// フォーマットして返す
return yy+"/"+mm+"/"+dd+"("+dy+") "+hh+":"+mi+":"+ss;
}

という感じ。
何だか、そこはかとなくむなしい気分ですが。
みなさん参考にしてください。

それから、今後もこういった微妙な仕様変更はあるかもしれないので注意が必要ですね。

-技術情報

執筆者:


  1. ゆう より:

    新しいシステムはどんどん変更されていくもんなんですね〜。
    ちょっと前にeditaもログインしたらあまりの変わりようにびっくりしましたもんね。(笑)
    twitterのことちょこっとだけ書いたのですが、その際にyagerさんのお名前もちょこっとだけ書いちゃいました、リンクつきで。(笑)

  2. yager より:

    >ゆうさん
    機能追加ならまだしも仕様変更はちょっとやり方を考えないとまずいですけどね。
    APIみたいなものは仕様が命ですから、いきなり変えたりするとすごい範囲に影響します。
    ま、今回の件は多分バグか、あまり深く考えずに「やっちゃった」感じかもしれません。
    リンクありがとうございます。twitter始めたらaddして下さいね。

comment

メールアドレスが公開されることはありません。

関連記事

Google:Gmailが携帯からも使えます

日本語でも3キャリアに対応したようです。 メールの閲覧、返信 — いつでもどこでもメールを閲覧、作成できます。Gmail はお使いの端末に合わせて最適化されるので、どこからでもメールにアクセスできます …

PageRank が 4 に、SEO TOOLS では A 評価になりました

このブログは自分の実験場所的な意味もあるので、SEOとか色々やってみては効果を確認するというサイクルを、自分のペースでゆるーく実践しているのですが、昨日久しぶりにSEO TOOLSをチェックしてみたら …

no image

動画を楽しもう!(インターネット編)

お待たせしました、動画シリーズ第3回はwebサービスを紹介します。 前回まではDVDから動画に変換する方法を紹介しましたが、今回は趣向を変えてオンラインで動画を配信しているサイトを集めて見ました。Yo …

新型MacBook(Late 2008) が届いたよ!

待ちに待ったMacBookが会社に届きました! いやー、もう嬉しい!!! とりあえず、何も設定できていませんが開封レポートまでのっけちゃいます。 (携帯カメラで撮影なので画質とかはご容赦下さい。)

YouTubeが無料で商用利用も可能なオーディオライブラリーを公開。約160曲がダウンロード可能!作業用BGMにも最高!

YouTubeでは管理画面内の編集機能で利用できるオーディオトラックが15万曲も用意されていますが、あくまでYouTube内での利用しかできない制限がありました。今回ダウンロード可能なオーディオライブ …

スポンサードリンク

スポンサードリンク