2010年1月19日火曜日

[SFDC]:Apex Date.parse()メソッドは罠

Dateインスタンスを生成するメソッドは数あれど、罠があります。
こいつだ。
Date.parse()

↑は個人情報の"地域"の設定により指定する日付の指定形式が異なります。
詳しくはヘルプ見てください。

ちょいちょいと実験してみた。

date.parse('2009/12/27'); US×、JP○
date.parse('2009-12-27'); US×、JP○
date.parse('12/27/2009'); US○、JP×
date.parse('12-27-2009'); US×、JP×

ということで、グローバル環境の場合日本じゃ動くけど
USだと動かないといった事象が発生します。
 ※逆もしかり

Dateインスタンスを作る場合は将来グローバルになった時のことを
考慮してDate.valueOf()を利用することを推奨します。

※Date.valueOf()メソッドは必ず"yyyy-MM-dd HH:mm:ss" での指定になります。

Date.valueOf('2009-12-29'); US○、JP○

一番の問題はこれを知らない海外の開発者が"date.parse('12/27/2009');"を
使うことでしょう。。。

ヘルプにDate.parseはロケールの問題から非推奨と書いてくれればorz

0 件のコメント: