arcanum_jp’s blog

おっさんの日記

ノーツドミノ Tips:日付/時刻型のフィールドの値と今日の日付を比較する。

 入力された日付(日付ピッカーで入力するやつね)と今日の日付を比較する処理を作る必要があって、Webを検索したんだけどあまりいいのが見つからなかった。結局はできたんだけど、自分みたく困る人のためにココにメモ。実はこんなのは当たり前の処理なんていわないでね。


前提
  • フォームには日付/時刻型のフィールドYotei_ymdがある。
  • 「OK」ボタンなどのイベントで、システム時間(つまり今日)より前だったらエラーとする。
  • 処理はサーバーサイドJavaScriptで行う
失敗は成功のもと

 はじめ、こんな感じかなと思い書いていたけどなかなかうまくいかない。*1

var doc:NotesDocument = ... リソースなどから取得
var fldval = doc.getItemValue("yotei_ymd")[0];

if(fldval < @Today()){
    // 今日より前の日だ!
}

 なんでかな〜と思って両方の型を見ると型が異なることが判明。こりゃ駄目だわ・・・

var str1 = "str1=" + typeof(fldval);
var str2 = "str2=" + typeof(@Today);

str1 -> NotesDateTime型
str2 -> Date型

解決策

 なので、どちらかの型を同じくなるように変換してうまくいった。変換はDate型をNotesDateTime型にしたが、関数はNotesSessionクラスに定義されているcreateDateTime( )を使う。なお、NotesSessionのオブジェクトは組み込みオブジェクトとしてすでにsessionがある模様。

var doc:NotesDocument = ... リソースなどから取得
var fldval = doc.getItemValue("yotei_ymd")[0];

if(fldval < session.createDateTime(@Today())){
    // 今日より前の日だ!
}




 ・・・ノーツ、深いわ・・・

*1:getItemValue( )は必ず配列を返すので注意ね