2016-04-15 85 views
-1

我有一個Windows應用程序,用戶輸入開始時間和結束時間,如何檢查結束時間是次日時間。如何檢查時間是第二天

example: start time   end time 
      1:00:00 AM   5:00:00 AM 
      5:00:00 AM   10:00:00 AM 
      10:00:00 AM   5:00:00 PM 
      5:00:00 PM   10:00:00 PM 
      10:00:00 PM   1:00:00 AM --(next day) 
      1:00:00 AM   5:00:00 AM 

我想類似下面:

private void GenerateReportWithStartTimeandEndTime(string StartTime, string EndTime, string DailyTime) 
{ 
    DateTime tempStartTime = DateTime.ParseExact(StartTime, "HH:mm:ss tt", CultureInfo.InvariantCulture); 
    DateTime tempEndTime = DateTime.ParseExact(EndTime, "HH:mm:ss tt", CultureInfo.InvariantCulture); 

    DateTime midNightToday = DateTime.Today.AddDays(1); 
    var StarthourDifference = (midNightToday - tempStartTime).TotalHours; 
    var EndhourDifference = (midNightToday - tempEndTime).TotalHours; 
    if (StarthourDifference - EndhourDifference > 0) 
    { 

    } 
    else 
    { 

    } 
} 
+1

如果你已經是光禿禿的時間值,你可以申請的唯一邏輯是檢查最終值是否小於起始值,*假設*表示第二天。如果這不是你想要做的,你需要解釋我們(和計算機)是如何在似乎沒有足夠信息的情況下神奇地確定這一點的。 –

+0

開始和結束時間*什麼*確切? –

+0

一天的開始和結束時間 – Tan

回答

4

怎麼樣

bool IsNextDay = EndTime < StartTime; 

代碼:

//case 1 
TimeSpan StartTime = DateTime.ParseExact("5:00:00 PM", "h:mm:ss tt", CultureInfo.InvariantCulture).TimeOfDay; 
TimeSpan EndTime = DateTime.ParseExact("10:00:00 PM", "h:mm:ss tt", CultureInfo.InvariantCulture).TimeOfDay; 
bool IsNextDay = EndTime < StartTime; //false 

//case 2 
TimeSpan StartTime2 = DateTime.ParseExact("10:00:00 PM", "h:mm:ss tt", CultureInfo.InvariantCulture).TimeOfDay; 
TimeSpan EndTime2 = DateTime.ParseExact("1:00:00 AM", "h:mm:ss tt", CultureInfo.InvariantCulture).TimeOfDay; 
bool IsNextDay2 = EndTime2 < StartTime2; //true 
+3

也可能是'<=',這取決於在兩個時間是否相等的情況下0小時還是24小時應該是解釋。 –

+0

@ LasseV.Karlsen雖然評論是正確的,但如果時差可能是24小時,那麼整個OPs規範就會變成碎片(這已經很糟糕了,但如果時差可能是24小時或更長,它會變得很糟糕:-)) – Jcl

+0

我知道所有關於「儘可能糟糕」的信息,我每天都會在我們的軟件中處理日期和時間,並且不得不處理這些確切的問題,*包括跨越兩個以上時間的數據日期。 –

0

這只是正常:

對於一段時間(因爲差異總是5小時),如果hh:mm:ss tt格式的結束分析時間少於開始分析時間,則它是第二天的時間。

var t1 = "10:00:00 PM"; 
var t2 = "01:00:00 AM"; 

var time1 = DateTime.ParseExact(t1, "hh:mm:ss tt", CultureInfo.InvariantCulture); 
var time2 = DateTime.ParseExact(t2, "hh:mm:ss tt", CultureInfo.InvariantCulture); 

if (time2 < time1) 
{ 
    Console.WriteLine("next day"); 
} 
else 
{ 
    Console.WriteLine("same day"); 
} 
0

都需要這樣一個條件:(的startDate>結束日期)和 (結束日期 - 的startDate)>24小時

相關問題