2008-10-29 142 views
59

我需要创建一个午夜的DateTime最佳方式

我只是这样做:

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

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

回答

129

只是使用foo.Date,或DateTime.Today为今天的日期

13

DateTime.Now.AddDays(1).Date

+6

我想`DateTime.Today.AddDays(1)`比这更好。 – 2016-01-05 15:23:53

10
DateTime endTime = DateTime.Now.Date; 

现在endTime.TimeOfDay.ToString()回报"00:00:00"

2

你可以使用DateTime.Today与午夜的确切秒数。

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(); 

这应该打印:

Today: 11/24/2016 10:00:00 AM , Mid Night: 11/24/2016 11:59:59 PM 
+0

这帮助了很多,这正是我想要的 – 2018-02-09 08:49:25

+0

@Matthias很好听。干杯! – Aruna 2018-02-09 09:13:16

0
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; 
     } 
    }