The line of code DateTime d = DateTime.Today;
results in 10/12/2011 12:00:00 AM
. How can I get only the date part.I need to ignore the time part when I compare two dates.

- 12,326
- 20
- 77
- 126
-
Today should also give a 0:00:00 result. – H H Oct 12 '11 at 13:04
-
@digem : Do you mean that midnight is _shown_ as 12AM? Could be. I don't think Today would actually return a culture-dependent value. – H H Oct 12 '11 at 13:10
-
@Henk: in english cultures Today.ToString() returns that value ;) – digEmAll Oct 12 '11 at 13:10
-
@Henk: yes sorry, I was inaccurate. Actually the ToString() returns that value if you use for example en-US culture. It's just because "12.00 AM" is equal to the "00.00" in 24h format ;) (I know it seems strange for non-english people, I'm italian...) – digEmAll Oct 12 '11 at 13:12
5 Answers
DateTime
is a DataType which is used to store both Date
and Time
. But it provides Properties to get the Date
Part.
You can get the Date part from Date
Property.
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

- 5,900
- 11
- 57
- 82
-
var object = DateTime.Now; object.Date.ToString("MM/dd/yyyy HH:mm") – John Zumbrum Aug 23 '12 at 16:46
-
2[Here](http://stackoverflow.com/a/39316624/2218697) is **another solution** using `String.Format`, hope helps someone. – Shaiju T Sep 04 '16 at 11:56
There is no way to "discard" the time component.
DateTime.Today
is the same as:
DateTime d = DateTime.Now.Date;
If you only want to display only the date portion, simply do that - use ToString
with the format string you need.
For example, using the standard format string "D" (long date format specifier):
d.ToString("D");

- 489,969
- 99
- 883
- 1,009
-
6
-
1
-
@Rauf - You can't get rid of that portion. You can choose not to display it though. – Oded Oct 12 '11 at 13:05
When comparing only the date of the datatimes, use the Date property. So this should work fine for you
datetime1.Date == datetime2.Date

- 59,338
- 27
- 124
- 151
-
-
+1, this is relevant for `comparing` dates. other answers are for displaying them – actual_kangaroo Feb 20 '14 at 04:33
DateTime d = DateTime.Today.Date;
Console.WriteLine(d.ToShortDateString()); // outputs just date
if you want to compare dates, ignoring the time part, make an use of DateTime.Year
and DateTime.DayOfYear
properties.
code snippet
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");

- 2,374
- 1
- 17
- 18
you can use a formatstring
DateTime time = DateTime.Now;
String format = "MMM ddd d HH:mm yyyy";
Console.WriteLine(time.ToString(format));

- 160
- 1
- 7