2012-07-11 18 views
5

Tôi đang sử dụng mãTimeSpan.TotalMinutes mà không giây

var minutesPassed = (DateTime.UtcNow - conversionsList.Last().DateStamp).TotalMinutes; 

để tính toán bao nhiêu phút trôi qua giữa hai ngày. Kết quả mà tôi nhận trông giống như

254,54445556

tôi nhận được phút và giây. Làm thế nào để có được kết quả đó sẽ chứa chỉ vài phút như thế này

?

Trả lời

5

Chỉ cần chuyển đổi một cách rõ ràng là kết quả để int:

var minutesPassed = (int)(DateTime.UtcNow - conversionsList.Last().DateStamp).TotalMinutes; 
+0

Điều này sẽ làm tròn lên đến 255 – Curt

+0

@Curt đó là không đúng. –

+0

Chuyển đổi '254.54445556' thành 'int' sẽ không tròn lên? – Curt

7

Sử dụng Math.Floor() để chuyển đổi 254.xxxx đến 254:

var minutesPassed = Math.Floor((DateTime.UtcNow - conversionsList.Last().DateStamp).TotalMinutes); 
3

Bạn chỉ có thể nhận được phần int

int minutes = (int) (DateTime.UtcNow - conversionsList.Last().DateStamp).TotalMinutes; 

điều này sẽ giúp bạn có được phần int của giá trị.

CHỈNH SỬA: theo cách làm tròn giá trị được xem xét. Điều đó không đúng. Hãy xem xét những điều sau đây:

double d = 254.99999999999d; 
int test = (int)d; 

Đây test sẽ tổ chức 254, không 255

Vấn đề duy nhất với các diễn viên rõ ràng là OverFlowException

+0

Điều này sẽ làm tròn lên đến 255 – Curt

+1

@Curt, nó sẽ không, tôi đã thử điều này trong Visual studio và nó đang cho 254. double d = 254.54445556d; int test = (int) d; Đúng nếu tôi kiểm tra sai – Habib

+0

Chúc mừng tôi luôn nghĩ rằng nó được làm tròn thành int gần nhất. Ngạc nhiên! – Curt

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