[C#][Windows Formsアプリ][DateTimePicker] Textプロパティの使い方

スポンサーリンク

はじめに

Windows Forms の DateTimePicker には、日付そのものを扱う Value プロパティ と、
画面に表示されている文字列を扱う Text プロパティ の2つがあります。
このページでは、Text プロパティの役割・使いどころ・Value との違いを詳しく整理して解説します。

💡 一言でまとめると:
Text は「画面に見えている日付の文字列」、Value は「内部的な日付データ」です。

 

Text プロパティとは?

プロパティ名 内容
Text string DateTimePicker に表示されている文字列そのもの

Text は Value を Format / CustomFormat に基づいて文字列化したものです。
つまり、Value と Text の関係は次のとおりです:

Value(DateTime)Format / CustomFormatText(string)

ただし、Text を「表示内容の読み取り」として使うべきであって、
「日付の設定」に使うのは基本的におすすめできません。

 

Text の基本的な使い方

画面に表示されている日付文字列を取得する

// 表示されている文字列を取得
string text = dateTimePicker1.Text;

label1.Text = $"表示中の日付: {text}";

たとえば CustomFormat を使っていた場合、その書式どおりの文字列が取得できます。

 

Value と Text の違い(初心者が最初につまずきやすい点)

Value Text
DateTime string
役割 内部的な日付データ 画面に表示されている日付の文字列
用途 計算・比較・保存などのロジック 表示確認・ログ用の文字列など
書式の影響 受けない Format / CustomFormat の影響を受ける
✔ 実務では
Value → DB保存
Text → UIやログ表示
という使い分けが一般的です。

 

Text を設定するのはアリ? → 基本的には非推奨

Text に文字列を代入すると、DateTimePicker はその文字列を日付として解釈しようとします。

// 文字列から Value を設定可能
dateTimePicker1.Text = "2025/11/24";

ただし、これは次の理由で非推奨です:

  • 文字列の書式が Format に合っていないと例外・誤動作の原因になる
  • ロケール(地域設定)によって解釈が変わることがある
  • Value を直接設定したほうが安全・明確

安全な設定方法は Value を使うこと

dateTimePicker1.Value = new DateTime(2025, 11, 24);  // 安全

Text への文字列代入は「どうしても必要なときだけ」という扱いが望ましいです。

 

Format / CustomFormat との関係

Text の内容は次のルールで決まります:

  • Format = Short → 2025/11/24
  • Format = Long → 2025年11月24日 月曜日
  • Format = Time → 14:25
  • Format = Custom → CustomFormat の書式に従う

表示例

dateTimePicker1.Format = DateTimePickerFormat.Custom;
dateTimePicker1.CustomFormat = "yyyy/MM/dd (ddd)";

// Text の中身 → 2025/11/24 (月)
string text = dateTimePicker1.Text;

Text はあくまでも “画面に見えている文字列の結果” と覚えておきましょう。

 

実用例:ログ出力や表示に Text は便利

業務アプリでは、画面に見えている文字列をログに残したいケースがあります。

例:ログ出力で Text を使う

string log = $"ユーザー選択: {dateTimePicker1.Text}";
File.AppendAllText("log.txt", log + Environment.NewLine);

ユーザーに見えているとおりの書式でログを残せるため、Value より読みやすいです。

 

よくあるハマりポイント

  • Text を変更しても期待通りに動かない
    → Value を直接設定するのが正しい方法
  • Text の書式が Format によって勝手に変わる
    → Text は表示書式の影響を受けるので、見た目を変えたいなら Format / CustomFormat を調整する
  • DB保存に Text を使うと後から困る
    → 日付の比較や計算ができず、将来のメンテナンスが非常に難しくなるため、必ず Value を使用する
  • ShowCheckBox が false でも常に Text は存在する
    → “未選択” の概念は Value にないため、Text が空になることは基本的にありません

 

まとめ

  • Text は DateTimePicker に表示されている日付の文字列
  • Value と違い、書式(Format / CustomFormat)の影響を受ける
  • 日付の設定は Text ではなく Value を使うのが安全
  • ログ出力や表示用としては Text が便利

初心者の方はまず「Value は実データ、Text は見た目」と覚えれば OK です。
次に CustomFormat で表示書式を整えることで、より使いやすい UI を作れるようになります。

Please follow and like us:

コメント

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