たれながし.info

とあるITエンジニアの備忘録

Microsoftの月例セキュリティ更新プログラムのリリース日時について

Microsoftの月例セキュリティ更新プログラムのリリース日時について

Microsoftの月例セキュリティ更新プログラムは「米国太平洋標準時の毎月第2火曜日の午前10時」にリリースされる。
全世界で同じタイミングらしい。

<参考>
blogs.windows.com

日本時間ではいつなのか?

米国太平洋標準時は「UTC-8」、日本標準時は「UTC+9」なので、日本時間では「第2水曜日もしくは第3水曜日の午前2時もしくは午前3時」となる。

日本時間で第2水曜日となるのか、第3水曜日となるのかはその月によって異なります。
日本時間で午前2時となるのか、午前3時となるのかはアメリカがサマータイムなのかによります。

サマータイムについて
アメリカでは現地時間の「3月第2日曜日午前2時〜11月第1日曜日午前2時」がサマータイムとなり、1時間早まる。

リリース日時を計算してみる

2023年のリリース日時を計算してみる。

プログラム

import datetime, calendar, pytz

def get_day_of_nth_dow(year, month, nth=2, dow=1):

    first_dow, n = calendar.monthrange(year, month)
    day = 7 * (nth - 1) + (dow - first_dow) % 7 + 1
    
    return day

if __name__ == '__main__':

    year=2023 # 2023年

    print('-' * 49)
    title = '|' + ' ' * 4 + '太平洋時間(PST)' + ' ' * 4 + \
            '|' + ' ' * 5 + '日本時間(JST)' + ' ' * 5 + '|'     
    print(title)
    print('-' * 49)

    for month in range(1, 13):

        # 第2火曜日の日付の取得
        day = get_day_of_nth_dow(year, month)
        naive_pst = datetime.datetime(year, month, day, 10)

        # 太平洋標準時(PST)の計算
        pst = pytz.timezone('US/Pacific')
        aware_pst = pst.localize(naive_pst)

        # 日本標準時(JST)の計算
        jst = pytz.timezone('Asia/Tokyo')
        aware_jst = aware_pst.astimezone(jst)

        print("| {} | {} |".format(aware_pst.strftime("%Y/%m/%d(%a) %H:%M"), aware_jst.strftime("%Y/%m/%d(%a) %H:%M")))
 
    print('-' * 49)

結果

-------------------------------------------------
|    太平洋時間(PST)    |     日本時間(JST)     |
-------------------------------------------------
| 2023/01/10(Tue) 10:00 | 2023/01/11(Wed) 03:00 |
| 2023/02/14(Tue) 10:00 | 2023/02/15(Wed) 03:00 |
| 2023/03/14(Tue) 10:00 | 2023/03/15(Wed) 02:00 |
| 2023/04/11(Tue) 10:00 | 2023/04/12(Wed) 02:00 |
| 2023/05/09(Tue) 10:00 | 2023/05/10(Wed) 02:00 |
| 2023/06/13(Tue) 10:00 | 2023/06/14(Wed) 02:00 |
| 2023/07/11(Tue) 10:00 | 2023/07/12(Wed) 02:00 |
| 2023/08/08(Tue) 10:00 | 2023/08/09(Wed) 02:00 |
| 2023/09/12(Tue) 10:00 | 2023/09/13(Wed) 02:00 |
| 2023/10/10(Tue) 10:00 | 2023/10/11(Wed) 02:00 |
| 2023/11/14(Tue) 10:00 | 2023/11/15(Wed) 03:00 |
| 2023/12/12(Tue) 10:00 | 2023/12/13(Wed) 03:00 |
-------------------------------------------------