2017-02-02 2 views
-3

ここに私のコードはのC# - 12:00 2:00 8:00から8:00の間で計算し、合計時間

DateTime TimeIn = "8:00 AM", 
     TimeOut="2:00 AM"; 
double Total; 

private void compute() 
{ 
    Total = (TimeOut - TimeIn).TotalHours; 
} 

8:00am to 2:00amだが18 hours .But鉱山をもたらすべきであるとき、私別の問題がある-7 を結果されますタイムアウトとしてC#が時刻として認識できませんでしたので、24:00と入力してください。

TimeOout12:00am未満の場合は正しく動作します。 11:59pmのようになります。 (eg.: 11:30PM - 8:00AM)正しく計算されます。

お願いします。

+0

これは、timeInとtimeOutが同じ日にある場合にのみ機能します。この期待される結果のために日付部分も含める必要があります –

+0

午前8時から午前2時まではわずか7時間の差があります。だからあなたが得た答えは正しい。あなたの問題は異なっています。時間に日付が含まれていません。もっと明確にするには... timeinが午前8時、タイムアウトが午前8時の合計時間はどうなりますか?それはゼロまたは24ですか。したがって、日付部分が必要です。とにかく、このトリックはあなたを助けるかもしれません..もしTimeOut

+0

@ un-lucky私は予期した結果に日付部分を含めることができます。簡単な例を挙げてください。どうもありがとうございました。 –

答えて

0

は24時間陰性の結果を追加します。

0

が、これはあなたを助けることができることがあります

string TimeIn= "8:00 AM"; 
string TimeOut= "2:00 AM"; 

TimeSpan duration = DateTime.Parse(TimeOut).Subtract(DateTime.Parse(TimeIn)); 
0

あなたがdatetime値を宣言した方法は間違っています。あなたがにデータを割り当てる際にも日付値を渡す必要がありますためにあなたが探している18時間のスパンが必要な場合は、それを行うための正しい方法は、日時書式

DateTime TimeIn = Convert.ToDateTime("08:00"); 
DateTime TimeOut = Convert.ToDateTime("02:00"); 
TimeSpan ts = TimeIn - TimeOut; 

に文字列を変換しています変数

+0

これはいいえ、日付値も渡す必要があります@SirRufo –

+0

はい。私は自分のコードをショートカットします。私はあなたのようにDateTimeを宣言します。ありがとうございました –

+0

@NikkoSunglao時間が00:00の次の日付を使用しなければならない24時間とは何も知られていません –