You can't store a "timeless" date in a DateTime: it isn't stored like that internally. Wen you create a DateTime instance, it doesn't store the year, month, and day separately - instead it converts it all to a number of ticks since a specific point in the the past, and stores that in a UInt64 value.
As a result, every DateTime has both a "date and a time component" at all times.
What you need to do is strip out the Time component when you format the data for display instead.
See here:
Formatting a DateTime for display - format string description[
^]
Never try to compare string based dates if you can avoid it: it can cause so many complications!
When doing "timeless" comparisons, you can strip out the time component from both sides using the Date property:
if (startDate.Date <= endDate.Date)
{
if (startDate.Date <= DateTime.Now.Date)
{
if (startDate.Date <= DateTime.Today)
{
Since the Date property (and Today) resets the Time to midnight, all comparisons work and ignore the time component.