文字列を日付に変換
こんにちはtaroです.
今回はDateの使い方について少し考えてみます.
過去にもDateクラスに関するエントリがございますので、こちらも参考にどうぞ.
文字列を日付に変換
コンストラクタに文字列を渡すことでその文字列が表す日付に対応するDateオブジェクトが生成されます.
日付の文字列の形式についてはリファレンスにもありますが、例えば、RSS2.0でも使われているRFC 822の書式が対応しています.
では、早速_level0で配信しているRSSを表示するシンプルなRSSリーダーを作ってみましょう.
RSSのpubDateからDateを生成します.
var data:Array = []; for each (var item:XML in XML(rssLoader.lastResult).channel.item) { // 文字列からDateを生成する var date:Date = new Date(item.pubDate.toString()); data.push( { title : item.title, link : item.link, 日付 : date.fullYear + '年' + (date.month + 1) + '月' + date.date + '日 ' + date.hours + '時' }); }
30行程度で簡単なRSSリーダーが出来てしまうのはFlexならでは、ですね.
少し気をつけないといけないのは、
var date:Date = new Date(item.pubDate.toString());
item.pubDateの型はXMLとなっていますので、このtoString()を外すことは出来ません.
うっかりXMLのままコンストラクタに渡してしまっても、Dateは可変長引数のコンストラクタであるため、型のチェックはコンパイル時に行われず、実行時にDateの生成が正しく出来ないということになってしまいます.
この例では、特に威力を発揮しませんが、例えばサーバーと連携するWebサービスを作るとき、Flash向けのAPIで使う日付の書式をDateのコンストラクタで使える書式に決めておくと、「APIでもらったデータを日付でソート」という機能の実装も容易になります.
コンストラクタに渡せる文字列の形式はリファレンスに明記はされていませんが、Date.parse()で使える形式は大体行けるように思います. TZDは、GMT±HHMM, UTC±HHMM等の形式です.
MM/DD/YYYY HH:MM:SS TZD HH:MM:SS TZD Day Mon/DD/YYYY Mon DD YYYY HH:MM:SS TZD Day Mon DD HH:MM:SS TZD YYYY Day DD Mon HH:MM:SS TZD YYYY Mon/DD/YYYY HH:MM:SS TZD YYYY/MM/DD HH:MM:SS TZD