Dateコマンドは12月31日の間違った週番号を提供します。

Dateコマンドは12月31日の間違った週番号を提供します。

12月31日の週番号を取得しようとすると、1が返されます。 12月30日の週番号を取得すると、52が出ます。これがまさに私が期待したものです。月曜日がぴったりの日ですね。これはUbuntuを実行しているRPIにあります。

$ date -d "2018-12-30T1:58:55" +"%V%a"

52Sun

$ date -d "2018-12-31T1:58:55" +"%V%a"

01Mon

時間文字列のない同じ問題

$ date -d "2018-12-31" +"%V%a"

01Mon

ベストアンサー1

これにより、月曜日からISO週間が始まります。

ISO州の日付システムは実際には輪廊カレンダーシステムであり、1988年から国際標準化機構(ISO)によって発行されたISO 8601の日付および時間標準(それ以前は2004年に最終改訂)として定義されました。 (R)1971年から2015年。 (主に)政府と企業の会計年度と時間の記録に使用されます。以前はこれを「産業日付エンコーディング」と呼んでいました。システムは、その年の序数主義のシンボルを定義してグレゴリオ暦の週を指定します。


ISO週番号年(非公式にISO年とも呼ばれる)は、52週または53週で構成されています。それは通常の365日または366日ではなく、364日または371日です。 ISO 8601ではこの用語を使用しませんが、追加のジュンジュとも呼ばれます。

毎週月曜日に始まります。年の各週は木曜日が属する年に属します。したがって、年の最初の週は常に1月4日を含みます。したがって、1月1日付近の特定の日付では、ISO記念日の数字がグレゴリオ暦とは若干異なります。


12/31を52週間で表示するには、%UISO規格を使用しないを使用する必要があります。

$ date -d "2018-12-31T1:58:55" +"%V%a"
01Mon
$ date -d "2018-12-31T1:58:55" +"%U%a"
52Mon

おすすめ記事