Home > Flash | PHP | 制作 > PHP time() 関数とFlashのDate型の連携の注意点

PHP time() 関数とFlashのDate型の連携の注意点

PHP time() 関数とFlashのDate型の連携ではまりました。あるコンテンツ制作でサーバーの時間を取得してゴニョゴニョするプログラムが必要になって、仕様を考えていたんですが、

サーバーの時間を取得するPHP
http://1ft.cbass.jp/blog/data/028_time_date/time.php

をざっくり作って、そのまま取得した値を、FlashのDateオブジェクトに突っ込んだら1970年の値から動かない><;

で、こんな検証コードを書いて、調べてみたら、わかった。

検証コード
http://1ft.cbass.jp/blog/data/028_time_date/time.html

要は、

  • PHP time関数は1970年からの秒で返す
  • FlashのDateオブジェクトのDate.setTimeは1970年からのミリ秒を受ける
  • FlashのDateオブジェクトに突っ込む際に、* 1000して、ミリ秒に整形する

という手順が必要。



var lvSend:LoadVars = new LoadVars();
var lvReturn:LoadVars = new LoadVars();

lvReturn.onLoad = function(){
	var d:Date = new Date();
	// time() を取得
	_root.txtStr1.text = this.time;
	// Flashでローカルタイムを取得
	_root.txtStr2.text = d.getTime();
	// time() をそのまま入れる。=うまくいかない
	d.setTime( Number( this.time ) )
	_root.txtStr3.text = d.toString();
	// time()は秒で返すので、setTime用にミリ秒に変換。
	d.setTime( Number( this.time ) * 1000 )
	_root.txtStr4.text = d.toString();
}

lvSend.sendAndLoad( "time.php" , lvReturn );


些細なことなのに、1時間くらいはまって困った。

従来どおり、PHPからdate()関数使いそうになりました。まー、date使ってもいいんですけど、記法を思い出すのに時間かかったり、12時扱いやら24時扱いやらで悩むがもったいなかったので、よかった。

そんなドタバタ、コードはこちら。
http://1ft.cbass.jp/blog/data/028_time_date/028_time_date.zip

Home > Flash | PHP | 制作 > PHP time() 関数とFlashのDate型の連携の注意点

Search
Feed

Return to page top