いいね!数

1

閲覧数
307
既知の問題であれば流してください。

XPagesで@Adjust関数を使って日付の計算を行ったところ、誤った結果になることがわかりました。

var afterOneMonth = @Adjust( @TextToTime("2014/03/01"), 0, 1, 0, 0, 0, 0 );

print( "3/1の1か月後=" + afterOneMonth );

とした場合、

HTTP JVM: 3/1の1か月後=14/03/29 0:00

となりました。

Notes/Dominoは9.0.1です。

下記のコードでは、「HTTP JVM: 3/1の1か月後=2014/04/01」が返ってきたので、こちらで回避しようとは思っていますが、他に良い方法があれば教えてください。

var dt:NotesDateTime = session.createDateTime("2014/03/01");
dt.adjustMonth(1);
print( "3/1の1か月後=" + dt.getDateOnly() );

サーバー情報: | クライアント情報: | 
カテゴリ:アプリ開発 - XPages | タグ:
  | 質問日時:2014/03/24 9:35:25

回答・コメント

いいね!数

0

なんかとても気になったので、他のパターンでも試してみたところ、

2014/05/01、2014/07/01、2014/10/01、2014/12/01

の1ヶ月後の日付が誤っていて、

それぞれ、

2014/05/31、2014/07/31、2014/10/31、2014/12/31

となりました。

どうも、前月が30日以下の場合におかしくなるようです。

従来のノーツアプリケーションでの@Adjust関数ではこんなことは起きない(確認済み)ので、

XPages(JavaScript?)の@Adjust関数の不具合じゃないかなぁ?・・・と思ってます。

回答日時:2014/03/24 15:06:40

いいね!数

1

var afterOneMonth = @Adjust( @TextToTime("2014/03/01"), 0, 1, 0, 0, 0, 0 );

var afterOneMonth = @Adjust( @TextToTime("2014/03/01"), 0, 1, 0, 0, 0, 0, "[InLocalTime]" );

にすればよいということがわかりました。

 

まるで自作自演のようになってしまいましたが、良しとします。

回答日時:2014/03/25 17:47:44

いいね!数

1

回答できなくてゴメンなさい。(facebookのつぶやきもみました・・・)

 

ヘルプみてもよく分かりませんでしたが、

日本は、夏時間ということでしょうか。。。

よい勉強になりました。

 

[InLocalTime] キーワードを指定すると、夏時間に伴う時間調整が可能になります。夏時間を実施している地域でこのキーワードを指定した場合、実施期間中は自動的に時差が計算され、常に正確な時間になるように調整されます。このキーワードを指定しなかった場合、夏時間に関する時差処理は実行されません。キーワードを指定する場合は、括弧も含めて正確に指定する必要があります。ただし、大文字と小文字を区別する必要はありません。無効なキーワードは無視されます。

回答日時:2014/03/27 16:59:27