2010-09-18 3 views
3

Я хотел бы знать, как сделать это в C#C# Количество промежутка времени в пределах временного интервала

Скажем, у меня есть 2 timespans: TS1 является 3h и TS2 является 12h.

Каков самый быстрый способ рассчитать, сколько раз TS1 может идти в TS2? В этом случае выход будет равен 4.

если TS1 составляет 8 дней, а TS2 - 32 дня, он также будет возвращать 4.

+1

И если TS1 = 3h и TS2 = 13:05? Приведите примеры. –

+0

Пожалуйста, проверьте последнее предложение, я думаю, что вы ошибочно указали «... TS2 - 32 дня» –

+1

+1 Чтобы противостоять нисходящим путям без причины. Просто потому, что ответ прост, это не значит, что вопрос заслуживает ниспроверки. – NullUserException

ответ

8

Да, используйте целочисленное деление. Но дьявол находится в деталях, обязательно используйте целостное свойство TimeSpan, чтобы избежать проблем с переполнением и округлением:

int periods = (int)(TS1.Ticks/TS2.Ticks); 
+0

+1 по понятным причинам –

+1

+1 для использования тиков. –

+0

хорошо спасибо;> _ < – ibiza

8

Целое подразделение?

(int) TS1.TotalMilliseconds/(int) TS2.TotalMilliseconds; 
+0

Да, это пример того, как получить это неправильно. –

+1

@ Да, вы можете сделать случай, что лучше использовать «Ticks», и я проголосовал за вас. Но нет никаких признаков того, что OP заботится о субмиллисекундной точности. Фактически, самая маленькая единица, которую он использует, - час. –

+0

Ну, я согласен и +1 для указания целого деления. Вы могли бы использовать TimeSpan.TotalHours после этой логики, хотя, я только опубликовал, чтобы указать угол падения в угол. –

4

Вы можете поделить TotalMilliseconds на другой. То есть:

double times = TS2.TotalMilliseconds/TS1.TotalMilliseconds 
Смежные вопросы