2009年6月アーカイブ

FLASHのDateクラス

トラックバック(0) コメント(0)
SHARP系端末(931SH、932SHなど)でFLASH上でDateクラスを利用すると使い方によっては値がおかしくなってしまうみたいです。
現在時刻を

var d:Date = new Date();

のように取得する分には問題ないのですが、日付指定で例えば

var d:Date = new Date(2008, 1, 10);

と入力すると、実際の値は一ヶ月ほど未来に進んでしまっているようです。(どの日付指定がおかしくなるのかは特定できませんが...)
これはDataクラスのsetYearなどのメソッドを使っても同じ現象が起こります。
ただし、setTimeは例外のようで、ここで通常の使用どおり引数にミリ秒を指定すると正しいDateインスタンスが生成されます。ミリ秒は1970年1月1日からの経過ミリ秒ですが、もちろんこのミリ秒を求めるために

var d1:Date = new Date(2008, 1, 10);
var d2:Date = new Date();
d2.setTime(d1.getTime());

とやってしまっては意味がないので経過ミリ秒を自力で計算する必要があります。
計算はちょっとめんどくさそうですが、閏年に気をつければそれほど難しくはないでしょう。
ちなみに閏年の判定は以下の通り

function isUruudoshi(year:Number):Boolean
{
    return year % 4 == 0 && (year % 100 != 0 || year % 400 == 0);
}