プロが教える店舗&オフィスのセキュリティ対策術

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

A 回答 (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 に表示

というわけです。
    • good
    • 0
この回答へのお礼

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

お礼日時:2006/11/30 21:21

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!