133 Views
October 04, 20
スライド概要
Notes/Dominoの@関数を取り上げながら、調べたこと、経験したことを雑談しております。
第20回は @Adjustを扱っています。また関連して、日付・時刻型の定数について少し。
@ -notes knows community- 2020/03/12 @関数Talk 第20回 公開版 @ 阿部 覚 (tw:) @abesat
@ 過去のプレゼンを見直していたら 第2回にこんなお話しがありました @
@ 要約します: 現在の日時を返す@Now関数では [SERVERTIME]という引数をつけることができます @ 引数なしの @Now は、PC上の日時を返しますが
@ 引数つきの @Now([SERVERTIME]) は、 サーバー上の日時を返します いっぽう、 昨日、今日、明日の値を返す @Yesterday、@Today、@Tomorrow の各関数は 常にPC上の日付を基準に値を返します サーバー上の日付を取り込む引数はありません したがって… @
@ @ なんてことを発表していたのですが 「またの機会」を忘れたままにしておりました そんなニーズがあるかどうかは怪しいですが せっかくなので今回、確認しようと思います
@ @Adjust を雑談 @
@ 日時を調節する関数です 年月日 時分秒 指定された日時の値を調整して変更します 図の例では、元の日時を 6秒+5分+4時間+3日+2か月+1年 進めています @
@ 日時を調節する関数です こちらは、文書の作成日時(@Created )と 「その20日前」を並べてみたもの @ 調整したいのが「日だけ」「時間だけ」という場合も 「年」「月」「日」「時」「分」「秒」すべて指定します 調整するところ以外は、0の指定になります
@ 日時を調節する関数です こちらの例では 元の日付を「2日と1カ月」進めています 「1カ月と2日」といわないのは 単位の小さいほうから計算されるからです @
@ 昨日・今日・明日は… きっかけとなった冒頭のお話に戻ります PC上の日時をいじって不正な日付けを表示するのを防ぎたい場合 PC日付しか表現できない@Todayの代わりに まず「今日」をサーバー日時できっちり取得するとすると これ自体は @Adjust を使わなくてもできます @Todayと同様の表現にするために @Dateという関数を使い、現在の日時を 今日の"日付だけ"にしています @
@ 昨日・今日・明日は… そのうえで、昨日と明日については @Adjust を使用します 昨日 明日 昨日・今日・明日をまとめて並べてみました @
@ 元の日時について 最初の引数である日時ですが 複数指定できます それぞれの日の1週間後の日付のリスト こちらのリストはそれぞれの時間の10分前 @
@ 元の日時について 実は、それらを組み合わせちゃうこともできる 日付だけのほうは1日進み 時間だけのほうは2時間進む @
@ 元の日時について ということは、 例えば、「開始日」と「開始時間」のフィールドが分かれている場合に ○日後 と ■時間後 を まとめて出せたりもします @ ただし、時間が増加した結果、開始時間が0時をまわっても 開始日のほうは繰り上がったりはしないので、ご注意のほど
@ ついでに、値の限界も見たくなったりして 果たしていくつまで指定できるの?というのを またやってみたくなりました 「秒」で試したところ @ この値を超えると、@Adjustが機能しなくなりました 前回、@DbLookup のお話しでも登場した「2の31乗」です
@ ついでに、値の限界も見たくなったりして 「分」でも同様… @
@ ついでに、値の限界も見たくなったりして ただし「時」まですすむと、結果の「年」部分がオーバーフローして これ以上の検証が意味をなさなくなりました (実際には8桁の数値の途中でオーバーフローに達しちゃいます) @
@ ここで、今回確認するうちに 気になったところを お話しさせていただこうかと @
@ @Adjust を試してる うちに気になった 日時定数のお話し @
@ ここでの日時定数とは この部分のことですね 角カッコ(ヘルプでは「ブラケット」と表現してるので検索時に注意)で かこまれた日時 ないしは 日付、時間 ヘルプでは「日付/時刻定数」と書いています 各単位の先頭0は略してもよく 年と秒も略せます(略した場合は今年と0秒) @
@ 気になったことその1:日付の最小値 これ、どういうことかわかりますか? どうやら不具合ではないのです @
@ 気になったことその1:日付の最小値 1000年加算するのをやめるとこうなります つまり0001=2001 @
@ 気になったことその1:日付の最小値 表現をこうかえたら少しわかるかな 「'01」ってことみたいです 要は @ 1950~2049の間…現在を含む100年間は、2桁入力でも認識してくれる ようになっている でも、00を加えた4桁で表記しても、それが適用されてしまうようです したがって日時定数では表現できるのは、 西暦100年から後、ということになります
@ 気になったことその2:コメント追加? 日時定数は日時が入っているところだけ解釈して、 あとは無視してくれるらしく、こんなことしても エラーになりませんでした 😅 @ (ただし、文字列に「:」を含めると 時間と解釈しようとするのか、エラーが出ます)
@ 今回もお付き合いいただき ありがとうございました @