DateTimeから日付のみを取得する
生年月日から年齢を取得する処理を書こうとする中でDateTime型のオブジェクトから日付を取得しようとしたところ、DateTime.DateとDateTime.Dayというふたつの取得方法がありました。
一度知れば大きく異なる2者ですが、両者について言及されている記事が見つからなかったので簡単にまとめます。
結論から言えば、今回の場合取得したいものが年月を無視した日付単独の値だったので、DateTime.Dayを用いました
DateTime.DateはDateTimeの時刻を00:00:00にしたものを返します。
対してDateTime.DayはDateTimeの日付部分をInt型で返します。
DateTime today = DateTime.now;
DateTime dateToday = today.Date;
int dayToday = today.Day;
それぞれ2行目がDateTime.Dateプロパティ、3行目がDateTime.Dayを用いて言います。
出力すると以下のようになります。
Console.WriteLine( today );
Console.WriteLine( dateToday );
Console.WriteLine( dayToday );
2021/05/25 23:56:25
2021/05/25 0:00:00
25
DateTime.Dateで獲ってくる値はDatTime型
DateTime.DayはInt型でかつ年月の情報はありません。
DateとDayでややこしさがありますが、全く別物ですね。
Dayで取得した場合はそのまま整数の値として使用できます。
Dateで取得した場合、同じくDateでの加算減産を行うとTimeSpan型で値を得ることになります。
それについてはまた今度
備忘録程度に