2012-04-03 33 views
17

Tôi có mã tạo khoảng thời gian để tính thời lượng của một số hành động. Điều tôi muốn làm là lấy kết quả đó (thời lượng) và chia cho một số, bất kỳ số nào.Phân chia thời gian theo số

Tôi có thể làm như thế nào?

+1

tôi đã cố gắng đúc, nhưng trình biên dịch trả về một lỗi. Nếu tôi nhận được kết quả là 0.0000000004, tôi muốn chia số đó, cho phép nói, trong 4. Đây chỉ là một ví dụ. – Novak

+1

có thể trùng lặp của [Multiply TimeSpan in .NET] (http://stackoverflow.com/questions/9909086/multiply-timespan-in-net) –

Trả lời

7

thử

TimeSpan X = ...; 

var Result = X.TotalMilliseconds/WhatEverNumber; 

Để tham khảo thấy MSDN.

+3

Điều này sẽ cung cấp cho bạn một đôi, không phải là một TimeSpan. Xem các câu trả lời khác. – DCShannon

8

Sử dụng một trong các thuộc tính Total* của số TimeSpan là các số.

I.e. nếu bạn đang chạy năm lần lặp lại của một số mã mà bạn đo lường, thì bạn có thể sử dụng

myTimeSpan.TotalMilliseconds/5 

để nhận số mili giây trung bình trên mỗi lần lặp lại. Bạn có thể sử dụng Ticks để lấy giá trị cơ bản và tạo một TimeSpan mới từ kết quả được chia.

+0

Hoàn toàn, người đàn ông !!! – Oded

5
TimeSpan ts = ... 
TimeSpan result = TimeSpan.FromTicks(ts.Ticks/divisor); 
25

Bạn có thể sử dụng ve của khoảng thời gian ban đầu:

var res = new TimeSpan(origSpan.Ticks/aNumberAnyNumber); 
+0

Upvoting vì đó là câu trả lời phân chia số nguyên đầu tiên, trong đó, khi có sẵn, hầu như luôn là lựa chọn tốt hơn. – Ekevoo

+0

Đối với tất cả các nhà phát triển VB.NET tình cờ gặp phải câu trả lời hữu ích này: toán tử phân chia là một bộ phận _integer_, vì vậy hãy sử dụng toán tử \ (dấu gạch chéo ngược) của VB để tránh lỗi _Option Strict On không cho phép chuyển đổi từ 'Double' sang 'Long' _. –

0

Phụ thuộc vào những gì bạn muốn chia, nhưng giả sử bạn muốn giây, bạn có thể sử dụng totalseconds tài sản.

TimeSpan ts = new TimeSpan(4, 0, 0); //Four hours 

MessageBox.Show((ts.TotalSeconds/4).ToString()); 
3

Nếu bạn muốn kết thúc với một TimeSpan mới là một phần nhỏ của cái cũ:

TimeSpan now = DateTime.Now.TimeOfDay; 
TimeSpan halfOfNow = new TimeSpan(now.Ticks/2); 
Các vấn đề liên quan