2016-04-15 4 views
-1

私は開始時間と終了時間を入力するウィンドウアプリケーションを持っています。終了時間は翌日の時間かどうかをチェックする方法です。以下のような時間が翌日であるかどうかをチェックする方法

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

* what *の開始時刻と終了時刻は正確ですか? –

+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

2つの時刻が等しい場合は、0時間か24時間のどちらが解釈されるべきかに応じて、 '<='になることもあります。 –

+0

@ LasseV.Karlsenコメントは間違いありませんが、時間差が24時間であれば、OP仕様全体が下がります(すでに悪いですが、時間差が24時間以上ある場合は、 :-)) – Jcl

+0

私は「得ることができるほど悪い」と私はすべて知っています。私は日々のソフトウェアの日時を扱い、これらの正確な問題に対処しなければなりません。日付。 –

0

hh:mm:ss tt形式の終了解析時間が解析開始時間より短い場合は、翌日になる時間(差は常に5時間です)の場合、翌日の時間です。

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時間

関連する問題