2013-03-11 5 views
0

Я пытаюсь вычислить разницу во времени двух заданных временных интервалов, но ответы не кажутся правильными, что я делаю неправильно?Рассчитать разницу во времени с помощью TimeSpan

Мой код: enter image description here

По какой-то причине значение, данное amFinish изменяется с 16:30 до 16:18:00 я понятия не имею, почему!

А что, если у меня есть текстовое поле и пользователь вводит 16,30, как бы я принять это значение и вычислить его как 16hrs и 30mins

Ответ должен быть 05.30, но вместо этого я получаю 05.18. Любые предложения?

+0

Вы понимаете, что amStart в считанные минуты, поэтому вы вычитаете (11 минут - 16 часов и 18 минут), и вы не должны вычитать amFinish - amStart? Если вам нужно 5:30 попробовать (новый TimeSpan (16,30,00) - новый TimeSpan (11,00,00)); – Heinrich

ответ

9

30% часов составляет 18 минут.

16.30 часов - 16 часов и 30/100 частей часа.

16 с половиной будет 16.50.

+0

ОК получил это спасибо. Что делать, если у меня есть текстовое поле, и пользователь вводит 16.30, как бы взять это значение и вычислить его как 16,5? – Tacit

+0

+1. @Tacit, гораздо проще и безопаснее отказаться от такого значения, вместо того, чтобы гадать, если пользователь хочет 0,3 или 0,5, или в равной степени другой способ 0.50 означает 50 минут или 30 минут? Просто скажите «нет». –

+0

Я уверен, что вам нужно это сделать. Ну, в моем случае у меня есть несколько временных интервалов, и мне нужно рассчитать разницу во времени всех, поскольку я иду, добавляя предыдущую разницу во времени к новой разнице во времени, которая может содержать .30 – Tacit

1

У вас есть десятичный 16.3 часов, что объясняет Одед 16 часов и 18 минут.

Если вам нужно указать оба часы, минуты и секунды, используйте перегрузку TimeSpan конструктор, который принимает три аргумента:

TimeSpan amStart = new TimeSpan(0, 11, 0); 
TimeSpan amFinish = new TimeSpan(16, 30, 0); 

И если вам нужно преобразовать string в TimeSpan, использовать что-то например:

TimeSpan amFinish = TimeSpan.ParseExact("16.30", @"hh\.mm", CultureInfo.InvariantCulture); 
+0

Это дает мне 00.05 в качестве ответа – Tacit

Смежные вопросы