Hatena::Groupnadesiko

そっとなでしこ RSSフィード


メインのブログに書くまでもない、なでしこ学習帳【記事一覧】 【このブログは何?】


特設!→【目次】なでしこ用Twitter 連携ライブラリ「なこったー」で遊ぶ


2010-06-23

協定世界時を日本標準時に変換

| 協定世界時を日本標準時に変換 - そっとなでしこ を含むブックマーク はてなブックマーク - 協定世界時を日本標準時に変換 - そっとなでしこ

 先日書いたスクリプトの「協定世界時(UTC)を日本標準時(JST)に変換」処理に初歩的なミスが…orz

取得日時[3]に「+09:00:00」を時間加算して取得時間に代入する。

●twitter引用HTMLを生成する、なでしこスクリプト - そっとなでしこ - なでしこ学習帳@はてな

http://nadesiko.g.hatena.ne.jp/mame-tanuki/20100620/twitter2html

日付変更が考慮されてませんね、これ…orz

…ということで、協定世界時から地域標準時を取得するサンプルを書きました。

■ソースコード

取得UTC日付は「2010/06/16」。
取得UTC時刻は「22:48:08」。
「UTC:{取得UTC日付} {取得UTC時刻}」を表示。

地域標準時変換(取得UTC日付、取得UTC時刻、「+」、「09:00:00」)
「日本標準時→{それ}」を表示。
地域標準時変換(取得UTC日付、取得UTC時刻、「-」、「10:00:00」)
「ハワイ・アリューシャン標準時→{それ}」を表示。


#-----------------------------------------------------------------------
●地域標準時変換(UTC日付、UTC時刻、加減算演算子、加減算時間)
  加減算日数は0。
  
  地域標準時刻は、UTC時刻に「{加減算演算子}{加減算時間}」を時間加算。
  UTC時刻を「:」で区切り、UTC時刻配列に代入。
  加減算時間を「:」で区切り、加減算時間配列に代入。
  
  もし、加減算演算子が「+」ならば
    秒換算は((UTC時刻配列[0]×60×60)+(UTC時刻配列[1]×60)+(UTC時刻配列[2]))+
    ((加減算時間配列[0]×60×60)+(加減算時間配列[1]×60)+(加減算時間配列[2]))
    もし、秒換算が(24×60×60)以上ならば
      加減算日数は1。
    ここまで。
  違えば
    秒換算は((UTC時刻配列[0]×60×60)+(UTC時刻配列[1]×60)+(UTC時刻配列[2]))-
    ((加減算時間配列[0]×60×60)+(加減算時間配列[1]×60)+(加減算時間配列[2]))
    もし、秒換算が0未満ならば
      加減算日数は1。
    ここまで。
  ここまで
  地域標準日時は、UTC日付に「{加減算演算子}0/0/{加減算日数}」を日付加算。
  「{地域標準日時} {地域標準時刻}」で戻る。

 ちなみに、はてなハイクもAPIで取得できる投稿日付も協定世界時。ただ、日付フォーマットが「ISO 8601形式」でtwitterとは違います。

 とは言え、協定世界時を日本標準時に変換する処理は共通化できそう。つまり、この処理を「ツイッター」グループで内部関数として定義し、「ツイッター」グループをミックスした「Hatenaハイク」グループではこれを呼び出して使うわけです。


■関連リンク