WebPlatform/AppFramework スクリプト開発モデルで「1948, 1949, 1950, 1951 年」の日付が、1時間ずれる場合があります。

【現象】
例えば、以下のソースを実行したとします。
===============================================
// 1948/5/3(Mon) 00:00:00
var dateOrigin = new Date(1948, 4, 3, 0, 0, 0);
var dateString_1 = DatabaseManager.dateToString(dateOrigin);
var dateString_2 = dateOrigin.toString();
Debug.browse(dateOrigin, dateString_1, dateString_2);
===============================================

結果は以下の様になります。
===============================================
1
Mon May 03 01:00:00 JDT 1948
Date
2
1948/05/03|01:00:00
String
3
Mon May 03 1948 00:00:00 GMT+0900 (JST)
String
===============================================
【対象バージョン】
WebPlatform Ver.7.0
WebPlatform Ver.7.1
WebPlatform Ver.7.2
AppFramework Ver.7.0
AppFramework Ver.7.1
AppFramework Ver.7.2
【回答】
スクリプト開発モデルにおいて、夏時間を表す日時を扱う場合、JavaScriptとJava間でのデータ受け渡し、および、Dateインスタンスから日付の文字列表現への変換が正確に行われない場合があります。
JavaScript の Date インスタンスが、以下の条件を全て満たす場合、JavaScriptとJava間でのデータ受け渡し、および、Dateインスタンスから日付の文字列表現への変換が正確に行われません。
(1時間ずれた日時になります)
[条件1] 1970 年以前または 2038 年以降である。
[条件2] ApplicationRuntimeが稼動しているJavaVMのデフォルトタイムゾーンにおける夏時間の期間内である。
  * ApplicationRuntime のタイムゾーンが JST(日本時間)の場合 
    - 「1948, 1949, 1950, 1951 年」  かつ「夏時間(サマータイム)実施している月」である。 
  * ApplicationRuntime のタイムゾーンが JST 以外の場合 
    - 「1970 年以前または 2038 年以降」  かつ「夏時間(サマータイム)実施している月」である。 
なお、この現象は、スクリプト開発モデルエンジン(Rhino)の仕様によるものです。
【回避方法】
ApplicationRuntime の conf/imart.xml の「intra-mart/platform/java/server/command/option」にJava-VM のシステムプロパティ「user.timezone」に、カスタムタイムゾーンIDを指定してください。
以下に設定例を示します。
●修正前
<option>-cp %SYSTEMCLASSPATH% -Xms%XMS% -Xmx%XMX% -XX:PermSize=128m -XX:MaxPermSize=128m -Djava.awt.headless=true</option>
●修正後
<option>-cp %SYSTEMCLASSPATH% -Xms%XMS% -Xmx%XMX%
-XX:PermSize=128m -XX:MaxPermSize=128m -Djava.awt.headless=true -Duser.timezone=GMT+0900</option>
「+0900」の部分は、GMT の 9 時間前を意味します。適切なタイムゾーンオフセットを設定してください。
カスタムタイムゾーンIDに関しては、JDKのAPIリスト java.util.TimeZone をご参照ください。


-- 対象 ------------------------------------------------------------------------
iWP/Webシステム構築基盤/WebPlatform/AppFramework
--------------------------------------------------------------------------------

FAQID:340
この記事は役に立ちましたか?
0人中0人がこの記事が役に立ったと言っています
Powered by Zendesk