使用简短版本在C#中格式化时间/持续时间的方法

时间:2012-09-30 21:37:28

标签: c# asp.net timespan duration

我正在寻找一种格式化用C#编写的ASP.NET Web应用程序最初用小时表示的持续时间(作为'双'变量)的方法。我需要一个只有2个重要值的简短版本。例如:

1h:20m
2d:20h 
2mo:12d 
5y:2mo

我进行了搜索,看起来C#没有我需要的内置函数。

所以我决定自己写,但我对所有部分的正确格式感到难过。例如,我可能会得到一个字符串,例如“1d:24h”,或者仅仅2个月,我可能会得到“1mo:29d”

PS。我遇到的问题是定义一个月和一年中的天数。

1 个答案:

答案 0 :(得分:0)

DateTime以其令人讨厌的任务而闻名。

由于没有迹象表明您指的是哪个月,因此根据给定的信息,这是不可能的。月份可以有28天,29天,30天和31天,具体取决于您考虑的月份/年份。

如果没有关于您正在处理的月份的指示,那么从1个月到2个月的翻转将随机猜测您转换的那一天。您将需要添加更多传入参数来解释此问题,或者向用户解释一个月被视为x天且仅x天。

要考虑的另一件事是夏令时。下午1点+ 24小时可能不是第二天下午1点。在这种情况下,您或最终用户可能希望考虑这样的日子23h = 1d或25h = 1d。