ISOWeek を使って ISO の週番号を計算する

ある日の ISO 8601 の週番号を知りたいことがあります

先週とか今週HTMLtime 要素でマークアップする時です

の日記で今週マークアップする時は、2020年の33週目なので <time datetime="2020-W33">今週</time> になります

HTML2.4.5.8 WeeksISO 8601 の週番号は異なる場合がありますが For modern purposes, a week as defined here is equivalent to ISO weeks as defined in ISO 8601. [ISO8601] とある通り普段はあまり気にする必要がないので今回は無視します

ついでに言うと ISO 8601 では月曜日を週の初めとしているので、例えば日曜日始まりで2020年11月第1週を表現したい場合は 2020年11月1日から7日 などの表現に変えた方が妥当かもしれません


この ISO 8601 の週番号の計算は .NETISOWeek クラス (System.Globalization) | Microsoft Docs で簡単に行う事が出来ます

PowerShellISOWeekGetWeekOfYear を使って今日の週番号を計算するコードは以下の通りです

ps> [Globalization.ISOWeek]::GetWeekOfYear([Datetime]::Now);
33

非常に個人的な話で恐縮ですが、私は ISO 8601 の週番号を計算する関数を自作する前に知りたかったです