TimeSpan Earlybeforetime = new TimeSpan();
Earlybeforetime = earlybefore.Subtract(Convert.ToDateTime(outtime);
有時會返回負值。如何將價值轉化爲永遠積極的?TimeSpan從負值到負值的差異
TimeSpan Earlybeforetime = new TimeSpan();
Earlybeforetime = earlybefore.Subtract(Convert.ToDateTime(outtime);
有時會返回負值。如何將價值轉化爲永遠積極的?TimeSpan從負值到負值的差異
你可以使用Negate()
改變負值轉正
從MSDN
如果當前實例的日期和時間比價值較早, 該方法返回一個表示時間間隔對象負時間 範圍。也就是說,所有非零屬性的值(例如 Days或Ticks)都是負值。
所以,你可以調用取決於求反方法在其值越大,並取得了積極的Timespan
說我們有startDate
和endDate
(結束日期比的startDate以上),所以當我們做 startDate.Subtract(endDate)
我們會得到一個負的TimeSpan
。所以根據這個檢查你可以轉換負值。所以,如果你outtime是超前的earlybefore它會給你一個負時間跨度
編輯
請檢查TimeSpan
這應該給你絕對值總是
Earlybeforetime.Duration()
我無法理解請解釋我或在這裏給出一些示例代碼 –
有時我得到正值也假設我將使用Negate()意味着正值變爲負值。需要我。我只是希望所有的回報值都是正面的。 –
@ user1065029擴大了一點,希望這可以幫助你 – V4Vendetta
Duration()
當你的早期時間早於時,返回負值。 如果你想有兩個時間點之間的絕對的「距離」,你可以使用TimeSpan.Duration方法,e.g:
TimeSpan first = TimeSpan.FromDays(5);
TimeSpan second = TimeSpan.FromDays(15);
TimeSpan final = first.Subtract(second).Duration();
Console.WriteLine(final);
此方法將返回絕對時間跨度值。
謝謝朋友..我得到了結果.. –
var startTime = new TimeSpan(6, 0, 0); // 6:00 AM
var endTime = new TimeSpan(5, 30, 0); // 5:30 AM
var hours24 = new TimeSpan(24, 0, 0);
var difference = endTime.Subtract(startTime); // (-00:30:00)
difference = (difference.Duration() != difference) ? hours24.Subtract(difference.Duration()) : difference; // (23:30:00)
還可以添加日期之間的區別,如果我們比較兩個不同的日期時間的24小時內new TimeSpan(24 * days, 0, 0)
可能重複http://stackoverflow.com/questions/8922435/timespan-difference-value-always-positive) – V4Vendetta