2012-01-19 35 views
15

tôi muốn chuyển đổi giá trị khoảng thời gian khác luôn tích cựckhoảng thời gian luôn luôn tích cực

Mã của tôi là ở đây:

TimeSpan lateaftertime = new TimeSpan(); 
lateaftertime = lateafter - Convert.ToDateTime(intime); 

tôi muốn có được kết quả của lateaftertime luôn tích cực .. hãy giúp tôi ..

+0

Bản sao có thể có của [Xử lý khoảng thời gian phủ định] (https://stackoverflow.com/questions/1018643/handle-negative-time-spans) – Michael

Trả lời

1

OK, tôi giả sử bạn đang sử dụng C# vì có vẻ như vậy.

Nhà điều hành - trên lớp TimeSpan đã bị quá tải, vì vậy tất cả những gì bạn cần làm là tiền tố tính toán với - như bạn thực hiện nếu bạn đang thực hiện chuyển đổi trên số nguyên. Dưới đây là một số mã mà bạn có thể chạy trong một ứng dụng Console:

var inTime = "19-Jan-2012 21:00"; 
var lateAfter = Convert.ToDateTime("19-Jan-2012 20:00"); 
TimeSpan lateAfterTime = lateAfter - Convert.ToDateTime(inTime); 

var positiveLateAfterTime = 
    lateAfterTime < TimeSpan.Zero 
    ? 
    -lateAfterTime 
    : 
    lateAfterTime; 

Console.WriteLine(positiveLateAfterTime.ToString()); 
40

Bạn có thể sử dụng lateaftertime.Duration() để có được một khoảng không âm.

+12

Không cần điều đó, chỉ cần sử dụng 'Thời lượng()' sẽ cung cấp cho tuyệt đối 'TimeSpan' – V4Vendetta

+0

@ V4Vendetta: Tôi chưa bao giờ biết điều đó. Tìm hiểu điều gì đó mỗi ngày. Đó là một cách tiếp cận đẹp hơn nhiều. Tôi đã cập nhật câu trả lời của mình. – recursive

+1

Thay vì thay đổi câu trả lời của bạn, bạn đã yêu cầu @ V4Vendetta đăng bài của mình và nhận được sự công nhận xứng đáng. Đây hoàn toàn là ý kiến ​​cá nhân của tôi, nhưng tôi nghĩ thật không công bằng khi bạn nhận được những câu trả lời cho câu trả lời của mình. – julealgon

2

Bạn có thể sử dụng Math.Abs ​​():

 lateaftertime = new TimeSpan(Math.Abs(lateaftertime.Ticks)); 

tài V4Vendetta thực hiện cuộc gọi ngay trong một chú thích mặc dù. Sử dụng thuộc tính TimeSpan.Duration, nó luôn trả về giá trị tuyệt đối.

Các vấn đề liên quan