Upgrade to Pro — share decks privately, control downloads, hide ads and more …

サマータイム導入【開発者編】

 サマータイム導入【開発者編】

日本でもサマータイムが導入されたら Domino にどのような影響があるのかを検証してみました。

2018年12月13日開催の「のの会 第10回」で使用した資料です。

Haruyuki Nakano

September 17, 2022
Tweet

More Decks by Haruyuki Nakano

Other Decks in Technology

Transcript

  1. Notes/Domino のサマータイム対応 • サマータイムの情報(開始/終了の日時等)はタイムゾーン情報に含まれている • Notes/Domino は基本的にはOSのタイムゾーン設定に依存している • サーバーとクライアントの両方で(Windows Update等による)タイムゾーン情

    報の更新が必要 • 既存文書の古いタイムゾーン情報を更新するツールが公開されている • サマータイムの切替日は「ServerTasksAt?=」とプログラム文書に注意せよ • 2時間進めるサマータイムに対応できるのか?
  2. 【参考】正規のタイムゾーン値 Z=9$DO=1$DL=4 1 1 10 -1 1$ZX=1$ZN=Alaskan Z タイムゾーンの GMT

    からの時差。上記はGMTの9時間後であることを示している DO サマータイム (DST : Daylight Saving Time) 監視フラグ。 1 はサマータイムが有効であることを示し、0 は無効であることを示します。1 の場合は DL に値が渡されます DL <開始月> <開始週> <開始曜日> <終了月> <終了週> <終了曜日> を特定するサマータイ ムのルール ZX ホスト固有のタイムゾーンインデックス ZN タイムゾーン名 正規のタイムゾーン値には、夏時間を適用する「年」、開始/終 了の「時刻」、「進める時間の長さ」を示す情報が無い
  3. 【検証】日本のタイムゾーン値を変える Z=-9$DO= 1$DL= 4 1 1 10 1 1$ZX=110$ZN=Tokyo 4月の第一日曜

    10月の第一日曜 夏時間を有効化 @GetCurrentTimezone の戻り値 “Z=-9$DO=0$ZX=110$ZN=Tokyo”
  4. 【検証】日本のタイムゾーン値を変える 夏時間の実施状況 z := "Z=-9$DO= 1$DL= 4 1 1 10

    1 1$ZX=110$ZN=Tokyo"; dt := [2018/ xx/15 12:00:00]; tm := @TimeMerge ( @Date( dt ); @Time( dt ); z ) 1時間戻る? 1時間進む 開始/終了が逆?
  5. 【検証】日本のタイムゾーン値を変える 切り替え時刻 z := "Z=-9$DO= 1$DL= 4 1 1 10

    1 1$ZX=110$ZN=Tokyo"; dt := [ 2018/04/01 01:00:00]; tm := @TimeMerge ( @Date( dt ); @Time( dt ); z ) 開始日の4時?終了日の1時? 開始日の2時、終了日の1時
  6. 夏時間の自動変換(終了日時) OSのタイムゾーン:PST 式 結果 @Text([2018/11/04 00:59:59]; "D0T0Z2") 2018/11/04 00:59:59 PDT

    @Text([2018/11/04 01:00:00]; "D0T0Z2") 2018/11/04 01:00:00 PST 1秒後のつもりで指定すると… (1秒後は 2018/11/04 00:00:00 PST だが) 1時間と1秒後
  7. 日時はそのまま、ラベルだけ変わる dt :=@TextToTime( "2018/10/10 12:00:00" ) OSのタイムゾーン @Text( dt; “D0T0Z2“

    ) の結果 ZE9 2018/10/10 12:00:00 ZE9 PST 2018/10/10 12:00:00 PDT @TextToTime の値にタイムゾーンが無い場合、 現在のOSのタイムゾーンが適用される。
  8. 特定の地域の日時をハードコードするなら dt := @TextToTime( "2018/10/10 12:00:00 ZE9" ) OSのタイムゾーン @Text(

    dt; “D0T0Z2“ ) の結果 ZE9 2018/10/10 12:00:00 ZE9 PST 2018/10/10 12:00:00 ZE9 @TextToTime の値にあるラベルが 現在のOSのタイムゾーンより優先される。 ※無効なラベルを指定すると、OSのタイムゾーン(ローカル時刻)になる
  9. 異なるタイムゾーンにおける ラベルの不一致 OSのタイムゾーン @Text( a; "D0T0Z2“ ) ZE9 2018/11/10 12:00:00

    PDT PST 2018/11/10 12:00:00 PST dt := @TextToTime("2018/10/10 12:00:00 PDT"); a := @Adjust( dt; 0; 1; 0; 0; 0; 0; [InGMT] ); OSのタイムゾーンが異なる場 合、夏時間が有効のまま OSのタイムゾーンがPSTの場 合、標準時に変換される 10月10日の1カ月後は 標準時(PST)に戻る
  10. 日時を扱う関数の戻り値は Variant 型 日付/時刻 CDat 関数 Now 関数 日付のみ Date

    関数 DateNumber 関数 DataValue 関数 Today 関数 時刻のみ Time 関数 TimeNumber 関数 TimeValue 関数 タイムゾーンを扱う関数は存在しない
  11. Variant 型の日付 0000 0000 0000 0000 0000 0000 0000 0000

    0000 0000 0000 0000 0000 0000 0000 0000 64ビット(= 8バイト) 整数部=日付 小数部=時刻 LotusScript では日付として西暦100年1月1日(-657434)から9999 年12月31日(2958465)までの範囲を許容 0は1899年12月30日を表す
  12. NotesDateTime クラス メソッド AdjustDay AdjustHour AdjustMinute AdjustMonth AdjustSecond AdjustYear ConvertToZone

    New SetAnyDate SetAnyTime SetNow TimeDifference TimeDifferenceDouble プロパティ DateOnly GMTTime IsDST IsValidDate LocalTime LSGMTTime LSLocalTime Parent TimeOnly TimeZone ZoneTime
  13. 異なるタイムゾーンにおける ラベルの不一致 ラベルは PST になる ラベルは PDT のまま 2018年11月5日は太平洋標準時 PST

    で夏時間終了の翌日だが、 あえて夏時間を示すラベル PDT を付けて変換を試みた OSのタイムゾーンをPSTに設定 OSのタイムゾーンをZE9に設定 IsDST は False に変わる IsDST は True のまま
  14. 夏時間対応の完全な検証実施は OSのタイムゾーン情報更新なしには困難 式言語 LotusScript タイムゾーンの扱い ◦ NotesDateTimeクラス 夏時間の扱い ◦ NotesDateTimeクラス

    夏時間実施の切替 ◦ NotesDateTimeクラス 夏時間の開始/終了日付指定 ◦ × 夏時間の開始/終了時刻指定 × × 繰り上げ時間の指定 × × 異なるタイムゾーンの夏時間に絡 む日時の計算 × ×
  15. どのラベルが有効? Dim dateTime As New NotesDateTime("Today 06:00") msg = "Zone"

    & Chr(9) + "Time" For i = -12 To 12 Call dateTime.ConvertToZone(i, False) msg = msg & Chr(10) & dateTime.TimeZone & Chr(9) & _ dateTime.ZoneTime Next MessageBox msg,, "Today 06:00 Standard Time" False: 標準時 True: 夏時間 標準時 夏時間 JST は無い… 夏時間の ラベルはある
  16. 勝手な想像ですが… https://github.com/eggert/tz/blob/2018c/asia # JST Jerusalem Standard Time [Danny Braniss, Hebrew

    University] # JST (Japan Standard Time) has been used since 1888-01-01 00:00 (JST). エルサレム標準時も「JST」と呼ばれ、タイムゾーンの特定が困難なため Notesで使われなくなったのでは?