[C#][Windows Formsアプリ][DateTimePicker] ShowWeekNumbersプロパティで週番号を表示

スポンサーリンク

はじめに

Windows Forms の DateTimePicker では、カレンダーに
「第◯週」という週番号を表示できる ShowWeekNumbers プロパティが用意されています。

日付だけでなく「何週目か」を意識するスケジュール管理や、
週単位で動く業務(生産計画・シフト・学習計画など)では、意外と便利な機能です。

💡 一言でいうと:
ShowWeekNumbers = カレンダーの左端に「週番号(1〜53)」を表示する機能

 

ShowWeekNumbers プロパティとは?

プロパティ名 ShowWeekNumbers
bool
役割 カレンダーの左端列に「週番号」を表示するかどうかを指定する

通常のカレンダーは「日〜土」の列だけですが、
ShowWeekNumbers = true にすると、その左側に「1, 2, 3, …」と週番号の列が追加されます。

 

基本的な使い方

週番号の表示をオンにする

// 週番号を表示
dateTimePicker1.ShowWeekNumbers = true;

週番号の表示をオフにする(既定値)

// 週番号を表示しない(デフォルト)
dateTimePicker1.ShowWeekNumbers = false;

プロパティウィンドウからも ShowWeekNumberstrue に設定できます。

 

週番号はどのように決まる?

週番号の付け方は、主に「OS のロケール(地域設定)」に依存します。
つまり、次のようなルールが関係してきます:

  • 週の開始曜日(通常は日曜または月曜)
  • 「第1週」をどこから数えるか(1月1日を含む週 / 最初の週のフル週など)

このため、同じ日付でも「日本設定」と「欧州設定」で
週番号が異なる場合があります。

✔ 「ISO 8601 の週番号にしたい」といった厳密な要件がある場合は、
DateTimePicker の表示に頼りすぎず、サーバー側や CalendarWeekRule での計算も検討しましょう。

 

ShowWeekNumbers が役に立つ場面

  • 生産計画・出荷計画など、週単位で管理する業務
  • 学校の授業計画・「第◯週」によるカリキュラム管理
  • 工事・タスク管理など「◯週目」を単位にしたスケジューリング
  • シフト表やローテーション表の期間指定

例:ラベルに「第◯週」を表示してあげる

週番号そのものは DateTimePicker から直接は取れないので、
DateTime に対して自分で計算してあげることが多いです。

private void dateTimePicker1_ValueChanged(object sender, EventArgs e)
{
    DateTime date = dateTimePicker1.Value;

    var culture = System.Globalization.CultureInfo.CurrentCulture;
    int week = culture.Calendar.GetWeekOfYear(
        date,
        culture.DateTimeFormat.CalendarWeekRule,
        culture.DateTimeFormat.FirstDayOfWeek);

    labelWeek.Text = $"第{week}週";
}

カレンダーの左端には週番号が出て、ラベルにも「第◯週」と表示されるようになります。

 

ShowWeekNumbers 使用時の注意点

  • 列が 1 つ増えるため幅が少し広く見える
    → レイアウトがタイトなダイアログでははみ出さないか確認が必要です。
  • ユーザーが週番号の意味を理解している前提が必要
    → 一般利用者向けアプリでは、むしろ混乱を招く可能性もあります。
  • 週番号のルールはロケール依存
    → 国・地域・社内ルールによって「第1週」の定義が違うケースがあるため注意。
  • ShowUpDown = true の場合はそもそもカレンダーが出ない
    → 時刻入力用のスピン形式では、このプロパティは意味を持ちません。

 

ShowWeekNumbers を使うかどうかの判断基準

以下のように考えると判断しやすくなります:

  • 業務が「週番号」ベースで動いている
    使う(true にする) 価値が高い
  • ユーザーが「◯月◯日」の方が馴染み深い
    → 無理に表示しない(false のまま)方がシンプル
  • 社内ルールに「第◯週」がよく登場する
    → 表示しておくと会話がスムーズ

 

まとめ

  • ShowWeekNumbers は、DateTimePicker のカレンダー左端に週番号を表示するプロパティ。
  • 週番号のルールは OS の地域設定に依存する。
  • 生産計画・シフト・教育計画など「第◯週」が重要な業務で特に有効。
  • 一般ユーザー向け UI では、あえてオフのままにしておく選択肢もある。
  • 週番号の数値がロジック上必要な場合は、Calendar.GetWeekOfYear で計算するのがおすすめ。

日付だけではなく、「時間軸を週単位で見る」業務システムでは、
ShowWeekNumbers を使うことでぐっと分かりやすいカレンダーになります。
必要な画面だけで賢くオンにして、ユーザーに寄り添った UI を作ってみてくださいね。

Please follow and like us:

コメント

タイトルとURLをコピーしました