将 TimeSpan 转换为用户可读且友好的文本的代码






2.90/5 (5投票s)
一段可以将 TimeSpan 转换为用户可读 UI 文本的代码,可以直接复制粘贴
引言
程序员和科学家喜欢数字,用户却不喜欢,因此,我采取措施将我的 Web-UI 中的所有数字转换为颜色、大小(进度条等)、图标等。
日期和时间也不例外!
“发送于 2012/4/5 15:43” 这样的说法有很多问题
- 需要一段时间才能弄清楚,这已经是两年前了……
- 对于两年前的帖子,小时数真的有意义吗?
即使日期也可能可以忽略不计。 - 没有人知道日期是 dd/mm/yyyy 还是 mm/dd/yyyy
背景
为了提供更好的用户体验,我认为 Facebook 通过用可读的时间戳标记帖子,例如:几秒前、一小时前、两年前等,做到了这一点。
我为 C# TimeSpan
类构建了一个类似的转换,并想与大家分享。
它将提供一个 string
,其中包含 TimeSpan
的每个有效部分 N 个部分,例如 4 年 3 个月包含两个部分。
Using the Code
只需将类复制到您的代码库中,并在需要时,对任何 TimeSpan
对象调用扩展方法 Prettify()
。
示例
DateTime dt = new DateTime(...); // any dateTime
string formatedDate = DateTime.Now.Substract(dt).Prettify();
您可以通过两个参数来控制输出
partCount
:表示您想要多少个非零部分。neglectionFactor
:如果某个部分对整体值的影响不大,则不输出该部分,这意味着如果年份数很高,月份变得不重要,将不会显示。
注意(本地化)
该代码旨在在希伯来语中使用,但可以轻松翻译成任何其他语言和方言。
只需更改 Get*Text(int v)
函数以返回其他值即可。