Способы форматирования времени / продолжительности в C# с использованием короткой версии
Я ищу способ отформатировать продолжительность времени, первоначально выраженную в часах (в виде двойной переменной) для веб-приложения ASP.NET, написанного на C#. Мне нужна короткая версия, которая имеет только 2 значимых значения. Например:
1h:20m
2d:20h
2mo:12d
5y:2mo
Я искал, и кажется, что C# не имеет встроенной функции для того, что мне нужно.
Поэтому я решил написать свой, но я озадачен правильным форматированием всех частей. Например, я могу получить строку, например "1d:24h", или в течение двух простых месяцев я могу получить "1mo: 29d"
PS. Проблема, с которой я столкнулся, заключается в определении количества дней в месяце и в году.
1 ответ
DateTime's известны тем, что были раздражающей задачей.
Поскольку нет никаких указаний относительно того, на какие месяцы вы ссылаетесь, с данной информацией это было бы невозможно. Месяцы могут иметь 28, 29, 30 и 31 день в зависимости от того, какой месяц / год вы принимаете во внимание.
Без указания того, с какими месяцами вы имеете дело, переход от 1 до 2 месяцев будет случайным предположением относительно того, в какой день вы выполняете переход. Вам придется либо добавить дополнительные входящие параметры, чтобы объяснить это, либо объяснить пользователю, что месяц считается x днями и только x днями.
Другая вещь, чтобы рассмотреть, была бы летняя экономия. 13:00 + 24 часа не может быть 13:00 на следующий день. В таких обстоятельствах с вами или конечным пользователем может потребоваться рассмотреть такие дни 23h=1d или 25h=1d.