web-dev-qa-db-ja.com

C#でDateTimeから日付部分を抽出します

コードの行DateTime d = DateTime.Today;10/12/2011 12:00:00 AMになります。日付部分のみを取得するにはどうすればよいですか。2つの日付を比較するとき、時間部分を無視する必要があります。

62
Rauf

DateTimeは、DateTimeの両方を格納するために使用される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
112
Sreekumar P

時間コンポーネントを「破棄」する方法はありません。

DateTime.Todayは次と同じです:

DateTime d = DateTime.Now.Date;

日付部分のみを表示する場合は、単にそれを行います。必要な形式文字列でToStringを使用します。

たとえば、 標準形式文字列 "D"(長い日付形式指定子)を使用します。

d.ToString("D");
31
Oded

データ時刻の日付のみを比較する場合は、Dateプロパティを使用します。だから、これはあなたのためにうまくいくはずです

datetime1.Date == datetime2.Date
15
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");
12
Nika G.

書式文字列を使用できます

DateTime time = DateTime.Now;              
String format = "MMM ddd d HH:mm yyyy";     
Console.WriteLine(time.ToString(format));
5
Nico Vermeir