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
- Newer: 今日はPC環境が厄日だったらしい
- Older: 自転車のタイヤに空気を入れた。