Найдите прошедшее время в годах, месяцах, днях, часах, минутах и секундах в C#

Структура TimeSpan представляет собой прошедшее время. Он имеет Days, Hours, Minutes, Seconds и Milliseconds свойства, которые сообщают вы о времени, прошедшем. Например, если две даты составляют 3 дня и 4 часа, то Days = 3 и Hours = 4.

Нелегко сказать, насколько далеки друг от друга две даты годами и месяцами, потому что годы и месяцы не все имеют одинаковую длину. Вместо того, чтобы приносить некоторые результаты, Microsoft просто не включала свойства Years и Months в структуре TimeSpan.

В этом примере вычисляется разница во времени с годами и месяцами, но иногда это приводит к неожиданным результатам. Например, разница между 29 февраля 2004 года и 28 февраля 2008 года составляет 3 года, 11 месяцев и 31 день. В другом примере разница между 29 февраля 2004 года и 28 февраля 2007 года составляет 3 года, потому что нет 29 февраля 2007 года.

Следующий метод GetElapsedTime возвращает прошедшее время между двумя датами в годах, месяцах, днях, часах, минутах, секундах и миллисекундах.

Если дата начала находится после даты окончания, тогда метод вызывает изменение своих дат и отрицание результатов.

После того, как дата начала будет завершена до даты окончания, программа вычитает годы «лет» и добавляет этот номер к дате начала. Если результат после даты окончания, он вычитает 1 из числа лет.

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

Программа работает в течение нескольких месяцев, поэтому метод AddMonths структуры DateTime может обрабатывать такие странности, как месяцы с разными количествами дней. Например, если вы добавите 1 месяц до 31 марта, вы получите 30 апреля, потому что апрель имеет только 30 дней.

После того, как он найдет наибольшее количество лет и месяцев, он может добавить к дате начала, программа использует TimeSpan для представления времени между скорректированной датой начала и датой окончания. Затем он использует структуру TimeSpan Days, Hours, Minutes, Seconds и Свойства Milliseconds.

Источник: http://csharphelper.com/blog/2015/02/find-elapsed-time-in-years-months-days-hours-minutes-and-seconds-in-c/

1 Звезда2 Звезды3 Звезды4 Звезды5 Звезд (Пока оценок нет)

Add a Comment

Ваш e-mail не будет опубликован. Обязательные поля помечены *