第7回 Dateクラスの日付と文字列の操作
第7回←教材はこれ!
- Dateインスタンスの日付に関するプロパティは以下。ま、ありがちな0スタート。曜日は日曜スタート。西暦は「year」じゃなくて「fullYear」なのがなんか違和感*1。でも4桁なんであと8000年近く大丈夫。
- 取得した日付をTextFieldインスタンスに表示するにはダイナミックテキスト。
[テキストツール]でTextFieldインスタンスを作成する。TextFieldインスタンスには,MovieClipインスタンスと同じように,プロパティインスペクタでインスタンス名を設定する必要がある。ここでは,インスタンス名は"my_txt"としよう。スクリプトでテキストを設定する場合,[テキストの種類]は[ダイナミックテキスト]を選ぶ
- あくまでTextFieldインスタンスに表示することができるのは文字列なのでデータ型も文字列に変換する必要がある。
var my_date:Date = new Date();
var nYear:Number = my_date.fullYear;
my_txt.text = String(nYear); ←ここでNumber型をString型に変換!
- 「年」以外のプロパティも表示させたい場合、文字列の連結が必要。「/」で連結したい場合は以下。
my_txt.text = String(nYear)+"/"+String(nMonth)+"/"+String(nDate);
加算演算子+は,式の演算対象となる項の値が数値か文字列かによって機能が変わる。数値のときは算術の加算になり,文字列であれば本文に示したように連結の機能を果たす。
数値と文字列を被演算子(オペランド)として加算演算子+を用いると,数値は自動的に文字列に変換されて,文字列を連結する処理が行われる。したがって,前記スクリプト2のTextField.textプロパティへの代入式は,String()関数を使うことなく,以下のステートメントでも同じ結果が得られる。
my_txt.text = nYear+"/"+nMonth+"/"+nDate;
しかし,データ型を意識してString()関数により明示的に文字列への変換を行う方が,万が一の失敗を防ぐ確実なスクリプティングということはできる。
*1:しかも「Y」だけ大文字