コードの行DateTime d = DateTime.Today;
は10/12/2011 12:00:00 AM
になります。日付部分のみを取得するにはどうすればよいですか。2つの日付を比較するとき、時間部分を無視する必要があります。
DateTime
は、Date
とTime
の両方を格納するために使用されるDataTypeです。ただし、Date
パートを取得するためのプロパティを提供します。
日付部分はDate
プロパティから取得できます。
http://msdn.Microsoft.com/en-us/library/system.datetime.date.aspx
DateTime date1 = new DateTime(2008, 6, 1, 7, 47, 0);
Console.WriteLine(date1.ToString());
// Get date-only portion of date, without its time.
DateTime dateOnly = date1.Date;
// Display date using short date string.
Console.WriteLine(dateOnly.ToString("d"));
// Display date using 24-hour clock.
Console.WriteLine(dateOnly.ToString("g"));
Console.WriteLine(dateOnly.ToString("MM/dd/yyyy HH:mm"));
// The example displays the following output to the console:
// 6/1/2008 7:47:00 AM
// 6/1/2008
// 6/1/2008 12:00 AM
// 06/01/2008 00:00
時間コンポーネントを「破棄」する方法はありません。
DateTime.Today
は次と同じです:
DateTime d = DateTime.Now.Date;
日付部分のみを表示する場合は、単にそれを行います。必要な形式文字列でToString
を使用します。
たとえば、 標準形式文字列 "D"(長い日付形式指定子)を使用します。
d.ToString("D");
データ時刻の日付のみを比較する場合は、Dateプロパティを使用します。だから、これはあなたのためにうまくいくはずです
datetime1.Date == datetime2.Date
DateTime d = DateTime.Today.Date;
Console.WriteLine(d.ToShortDateString()); // outputs just date
時間部分を無視して日付を比較する場合は、DateTime.Year
およびDateTime.DayOfYear
プロパティを使用します。
コードスニペット
DateTime d1 = DateTime.Today;
DateTime d2 = DateTime.Today.AddDays(3);
if (d1.Year < d2.Year)
Console.WriteLine("d1 < d2");
else
if (d1.DayOfYear < d2.DayOfYear)
Console.WriteLine("d1 < d2");
書式文字列を使用できます
DateTime time = DateTime.Now;
String format = "MMM ddd d HH:mm yyyy";
Console.WriteLine(time.ToString(format));