Как получить разницу с 24-часовым форматом времени?

У меня есть два времени (получение из Time Picker)

Time1=22:10
Time2=05:10

общая разница во времени мне нужна как 07:00

Например, с 10:10 pm по 05:10 am разница составляет 7 часов. Таким же образом я спрашиваю, как узнать, находится ли он в 24-часовом формате?

Как я могу достичь этого? В случае 12 часов я в порядке. Но я не знаю, как это сделать в 24-часовом формате?? Это веб-приложение.


person Semil Sebastian    schedule 20.02.2015    source источник
comment
Конечно, есть какое-то свойство, которое вы можете установить, или какой-то формат, который вы можете проанализировать. Посмотрите также NodaTime на github.   -  person Callum Linington    schedule 20.02.2015
comment
Вы спрашиваете о 12-часовом формате, но вы говорите, что 12-часовой формат подходит? Вы не перепутали оба случая?   -  person Mario    schedule 20.02.2015
comment
Разница во времени 7:00 или 17:00?   -  person SelvaS    schedule 20.02.2015
comment
@SelvaTS Я предполагаю, что второй раз всегда позже первого.   -  person Mario    schedule 20.02.2015
comment
Только что видел... 22:10 PM нет действительного времени. Сейчас либо 22:10, либо 22:10.   -  person Mario    schedule 20.02.2015
comment
@Mario, в этом случае нам нужно добавить еще один день и вычесть предыдущую дату.   -  person SelvaS    schedule 20.02.2015
comment
@Mario, его 24-часовой формат показывает время 22:10 (означает 22:10) и 05:10.   -  person Semil Sebastian    schedule 20.02.2015
comment
Вы должны объяснить немного больше, в чем проблема. У меня такая же проблема, как у Сельвы. Вы не знаете, всегда ли Time2 › чем Time1 или может быть раньше.   -  person Jannik    schedule 20.02.2015
comment
@SaraJohn Нет, 24-часовой формат не знает AM или PM - его не должно быть. Я должен знать, я из старой доброй Германии, и большинство людей не могут даже справиться с 12-часовым форматом (это как бы наоборот по сравнению с США :D).   -  person Mario    schedule 20.02.2015
comment
@Марио, извините, я отредактировал свой вопрос   -  person Semil Sebastian    schedule 20.02.2015
comment
Возможно, это может помочь вам stackoverflow.com/questions/3993226/   -  person    schedule 20.02.2015


Ответы (1)


Форматирование только применяется, когда вы пытаетесь получить строковое представление вашего DateTime или вашего TimeSpan. Разница между экземплярами этих двух типов не влияет на форматирование.

Если эти значения TimeSpan похожи;

TimeSpan ts1 = new TimeSpan(22, 0, 0);
TimeSpan ts2 = new TimeSpan(7, 0, 0);
TimeSpan result = ts1 - ts2;

result будет {15:00:00} как TimeSpan, у которого 15 будет как Hour свойство.

Кстати, форматы AM/PM применяются только для значений DateTime, а не TimeSpan. TimeSpan – это интервал времени.

Например; мы не можем сказать до полудня или после полудня для значения TimeSpan, поскольку оно вообще не имеет смысла.

Если у вас есть такие значения DateTime (и я думаю, что эти примеры будут соответствовать вашим значениям, так как вы хотите получить разницу в 7 часов между 22:10 и 05:10)

DateTime dt1 = new DateTime(2015, 2, 21, 5, 10, 0);
DateTime dt2 = new DateTime(2015, 2, 20, 22, 10, 0);
TimeSpan result = dt1 - dt2;

result будет {07:00:00} как TimeSpan, у которого есть 7 как свойство Hour.

person Soner Gönül    schedule 20.02.2015
comment
На самом деле это интересный подход, поскольку оба раза являются временными промежутками. Учитывая, что дата не имеет значения, это довольно аккуратно. :) - person Mario; 20.02.2015
comment
@Mario Да, даже если они DateTime, в результате их вычитание будет TimeSpan. Поскольку TimeSpan - это интервал времени, он не может иметь часть AM/PM, даже если мы отформатируем его. Мы не можем сказать до полудня или после полудня как значение TimeSpan. - person Soner Gönül; 20.02.2015
comment
@SaraJohn Являются ли эти значения Time1 и Time2 DateTime? Я думаю, что ваш Time2 на следующий день после Time1, так как вы хотите получить 7 часов в качестве разницы. Обновил мой ответ. Взглянем. - person Soner Gönül; 20.02.2015
comment
@Soner Gönül, это не DateTime, это значение, которое я получаю из средства выбора времени ccl - person Semil Sebastian; 20.02.2015
comment
@SaraJohn Если они string, вы можете сначала проанализировать их с помощью DateTime или TimeSpan. Оба типа имеют Parse методов. Вы можете проверить их документы. - person Soner Gönül; 20.02.2015
comment
@Soner Gönül, спасибо за вашу поддержку. Я сам нашел решение для этого, которое я добавил ниже. Пожалуйста, проверьте погоду, это полезно или нет .. - person Semil Sebastian; 20.02.2015
comment
Давайте продолжим это обсуждение в чате. - person Semil Sebastian; 20.02.2015