用 C # 创建午夜日期时间的最佳方法

我需要创建一个午夜日期时间

我刚刚这么做了:

DateTime endTime = DateTime.Now;
endTime.Subtract(endTime.TimeOfDay);

还没有测试它,我假设它工作,但有没有更好/更清洁的方法?

89187 次浏览

Just use foo.Date, or DateTime.Today for today's date

DateTime.Today

DateTime endTime = DateTime.Now.Date;

Now endTime.TimeOfDay.ToString() returns "00:00:00"

You can use DateTime.Today with exact seconds of the midnight.

    DateTime today = DateTime.Today;
DateTime mid = today.AddDays(1).AddSeconds(-1);
Console.WriteLine(string.Format("Today: {0} , Mid Night: {1}", today.ToString(), mid.ToString()));


Console.ReadLine();

This should print :

Today: 11/24/2016 10:00:00 AM , Mid Night: 11/24/2016 11:59:59 PM
    private bool IsServiceDatabaseProcessReadyToStart()
{
bool isGoodParms = true;
DateTime currentTime = DateTime.Now;
//24 Hour Clock
string[] timeSpan = currentTime.ToString("HH:mm:ss").Split(':');
//Default to Noon
int hr = 12;
int mn = 0;
int sc = 0;


if (!string.IsNullOrEmpty(timeSpan[0]))
{
hr = Convert.ToInt32(timeSpan[0]);
}
else
{
isGoodParms = false;
}


if (!string.IsNullOrEmpty(timeSpan[1]))
{
mn = Convert.ToInt32(timeSpan[1]);
}
else
{
isGoodParms = false;
}


if (!string.IsNullOrEmpty(timeSpan[2]))
{
sc = Convert.ToInt32(timeSpan[2]);
}
else
{
isGoodParms = false;
}


if (isGoodParms == true )
{
TimeSpan currentTimeSpan = new TimeSpan(hr, mn, sc);
TimeSpan minTimeSpan = new TimeSpan(0, 0, 0);
TimeSpan maxTimeSpan = new TimeSpan(0, 04, 59);
if (currentTimeSpan >= minTimeSpan && currentTimeSpan <= maxTimeSpan)
{
return true;
}
else
{
return false;
}
}
else
{
return false;
}
}
var dateMidnight = DateTime.ParseExact(DateTime.Now.ToString("yyyyMMdd"), "yyyyMMdd", CultureInfo.InvariantCulture);