2008-10-29 12 views
59

muszę utworzyć DateTime północyNajlepszy sposób tworzenia Midnight DateTime w C#

Właśnie odbywa się następująco:

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

Czy nie przetestować go jeszcze, jestem przy założeniu, że działa ale czy istnieje lepszy/czystszy sposób?

Odpowiedz

129

wystarczy użyć foo.Date lub DateTime.Today do dnia dzisiejszego

13

DateTime.Now.AddDays (1) .Date

+6

myślę 'DateTime.Today.AddDays (1)' jest ładniejszy niż ten. –

10
DateTime endTime = DateTime.Now.Date; 

Teraz endTime.TimeOfDay.ToString() powraca "00:00:00"

2

You może używać DateTime.Today z dokładnymi sekundami północy.

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

ten powinien wydrukować:

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

To bardzo pomogło i dokładnie to chciałem –

+0

@ Matthias dobrze to usłyszeć. Twoje zdrowie! – Aruna

+0

Północ jest pierwsza - to pierwsza sekunda dnia, a nie ostatnia. –

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

Witamy w StackOverflow. Oprócz podania kodu, proszę podać dodatkowe informacje o tym, dlaczego rozwiązanie działa i jak różni się od wcześniejszych rozwiązań. – buczek

Powiązane problemy