• ベストアンサー

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です。 よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
noname#35109
noname#35109
回答No.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 に表示 というわけです。

din1451
質問者

お礼

おかげさまで表示する事ができました。 非常に丁寧なご説明まで頂き本当にありがとうございました。

関連するQ&A