- ベストアンサー
rdfから取得したW3CDTF形式の日付表示形式を変更したい
time_xml.firstChild.childNodes[i].childNodes[5].firstChild.nodeValue (dc:date内)から参照する 2006-11-29T10:45+09:00(YYYY-MM-DDThh:mm:ssTZD) といったW3CDTF形式の日時データを 2006/11/29 10:45 のように表示形式を変換してtimetextというダイナミックテキストに 出力したいと考えていますがどうしてもうまくいきません。 どうか変換する方法を教えて下さい。環境はflash8です。 よろしくお願いします。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
- ベストアンサー
W3CDTF形式 と言っても, XMLデータに表されているもの自体は文字列ですから, 文字列として素直に扱えば良いのではないでしょうか。 変換と言うより, ”2006-11-29T10:45+09:00” この文字列で, →必要なのは前から 16 文字 →ハイフン(-)をスラッシュ(/)に置換 → T を半角スペースに置換 をすれば良いわけです。 「timetext」 という "インスタンス名"(変数名ではありません) の ダイナミックテキストのテキストフィールドをステージ上に用意した場合, フレームのスクリプトを次のようにすれば良いと思います。 //////////////////////////////////////////////////////////////////////// var myT = time_xml.firstChild.childNodes[i].childNodes[5].firstChild.nodeValue; var TArr = new Array(myT.substr(0, 16).split("-").join("/").split("T").join(" ")); _root.timetext.text = TArr; //////////////////////////////////////////////////////////////////////// たった3行のスクリプトです。 スクリプトは短くても, 説明すれば長いのですが。 1つの配列を用意して, 置換したい文字列を配列のエレメント(要素)として代入し, エレメントの区切りを入れたり(split),結合させたり(join)します。 そのとき, 区切り文字(列)を指定したり, 結合させるときに間に挟む文字(列)を指定してやると, それが置換となります。 同じ事を行を分けて書けば次のようになります。 //////////////////////////////////////////////////////////////////////// var myT = time_xml.firstChild.childNodes[i].childNodes[5].firstChild.nodeValue; var TArr = new Array(); TArr = myT.substr(0, 16); TArr = TArr.split("-"); TArr = TArr.join("/"); TArr = TArr.split("T"); TArr = TArr.join(" "); _root.timetext.text = TArr; //////////////////////////////////////////////////////////////////////// つまり, 2006-11-29T10:45+09:00 ↓.substr(0, 16) 2006-11-29T10:45 ↓.split("-") 2006, 11, 29T10:45 ↓.join("/") 2006/11/29T10:45 ↓.split("T") 2006/11/29, 10:45 ↓.join(" ") 2006/11/29 10:45 ↓ timetext に表示 というわけです。
お礼
おかげさまで表示する事ができました。 非常に丁寧なご説明まで頂き本当にありがとうございました。