はじめに
Windows Forms の DateTimePicker には、日付そのものを扱う Value プロパティ と、
画面に表示されている文字列を扱う Text プロパティ の2つがあります。
このページでは、Text プロパティの役割・使いどころ・Value との違いを詳しく整理して解説します。
💡 一言でまとめると:
Text は「画面に見えている日付の文字列」、Value は「内部的な日付データ」です。
Text は「画面に見えている日付の文字列」、Value は「内部的な日付データ」です。
Text プロパティとは?
| プロパティ名 | 型 | 内容 |
|---|---|---|
Text |
string |
DateTimePicker に表示されている文字列そのもの |
Text は Value を Format / CustomFormat に基づいて文字列化したものです。
つまり、Value と Text の関係は次のとおりです:
Value(DateTime) → Format / CustomFormat → Text(string)
ただし、Text を「表示内容の読み取り」として使うべきであって、
「日付の設定」に使うのは基本的におすすめできません。
Text の基本的な使い方
画面に表示されている日付文字列を取得する
// 表示されている文字列を取得
string text = dateTimePicker1.Text;
label1.Text = $"表示中の日付: {text}";
たとえば CustomFormat を使っていた場合、その書式どおりの文字列が取得できます。
Value と Text の違い(初心者が最初につまずきやすい点)
| Value | Text | |
|---|---|---|
| 型 | DateTime |
string |
| 役割 | 内部的な日付データ | 画面に表示されている日付の文字列 |
| 用途 | 計算・比較・保存などのロジック | 表示確認・ログ用の文字列など |
| 書式の影響 | 受けない | Format / CustomFormat の影響を受ける |
✔ 実務では
Value → DB保存
Text → UIやログ表示
という使い分けが一般的です。
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:

コメント