質問: dateTimePicker1.Value.Text; dateTimePickerのtext値を取得したく、上記のようなコードを入力しましたが、"dateTimePicker1.Value.Text"の"Text"の箇所にエラーが出てしまいます。 エラーの内容は以下の通りです。 「”System.DateTime”に”Text”の定義が含まれておらず、型System.DateTimeの最初の引数を引き受ける拡張メソッドが見つかりませんでした。usingディレクティブまたはアセンブリ参照が不足しています。」 ちなみにDateTimePicker.Textプロパティの名前空間であるSystem.Windows.Formsはインポート済みです。 C#に造詣が深い方、知恵をお貸しください。 よろしくお願いいたします。
回答: こんにちは。 DateTime型にはTextというプロパティは存在しません。string型に変換する場合は`ToString`メソッドが使えます。 ``` String ymd = dateTimePicker1.Value.ToString(); ``` また、DateTime型には、ToStringメソッド以外に、 * 長い形式の日付文字列に変換する`ToLongDateString` * 短い形式の日付文字列に変換する`ToShortDateString` * 長い形式の時刻文字列に変換する`ToLongTimeString` * 短い形式の時刻文字列に変換する`ToShortTimeString` などのメソッドが用意されています。 質問のコードには`String ymd = ...`と書かれていることから、「年月日」の文字列を取得したいと予想しました。よって、この場合は`ToLongDateString`メソッドを使用するのが適切かと思います。 一つ注意点として、日付の文字列化は「実行環境の言語設定の影響を受けます」。例えば、 ``` var now = DateTime.Now; Console.WriteLine($"日本語: { now.ToString(new CultureInfo("ja-JP")) }"); Console.WriteLine($"英語: { now.ToString(new CultureInfo("en-US")) }"); ``` 以上のコードを実行すると、出力結果が異なることを確認できます。 文字列のフォーマットが重要である場合は、予め出力結果を指定しておくなどの処置が必要になります。 詳しいことについては、以下のページを参照してください。必要な情報が全て書かれています。