入力された日付(日付ピッカーで入力するやつね)と今日の日付を比較する処理を作る必要があって、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( )は必ず配列を返すので注意ね