9

私は2つの変数を持っています:

Dim starttime As TimeSpan
Dim endtime As TimeSpan

私の starttime 値は次のとおりです: 02:30:00 (私は 2.30AM を意味します)
2.30AM は翌日です

私の endTime 値は次のとおりです: 10:30:00 (つまり、午前 10 時 30 分)

これらの時差を取得したい。だから私はこのようなコードを持っています:

Dim span3 As TimeSpan = starttime .Subtract(endtime ) 

今、私は span3 を取得しています: 08:00:00

これは間違った答えです。実際には16:00:00を取得したいです。(これは午前 2 時 30 分から午前 10 時 30 分までの正確な差です)

どうすればこれを計算できますか?

4

3 に答える 3

3

あなたは混乱DateTimeしていTimeSpanます。TimeSpan期間を格納するため、AM と PM は関係ありません。2 回比較したい場合はDateTime、両方を使用して減算する必要がありますTimeSpan

TimeSpan に「午前 2 時」の値を指定することはできませんDateTime。そのために使用する必要があります。

検討:

var date1 = DateTime.Now.Date.AddHours(2); // pseudo code 2am
var date2 = DateTime.Now.Date.AddHours(11); // pseudo code 11am

var result = date2 - date1;

ここでの結果は、9 時間の期間になります。

翌日の午前 2 時にしたい場合は、AddDays(1); を含める必要があります。

var date1 = DateTime.Now.Date.AddDays(1).AddHours(2); // pseudo code 2am the next day
var date2 = DateTime.Now.Date.AddHours(11); // pseudo code 11am

var result = date1 - date2;

ここでの結果は 15 時間になります。

于 2013-09-19T12:59:55.913 に答える