65.9K
CodeProject 正在变化。 阅读更多。
Home

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

starIconstarIcon
emptyStarIcon
starIcon
emptyStarIconemptyStarIcon

2.90/5 (5投票s)

2014年1月30日

CPOL

1分钟阅读

viewsIcon

17386

downloadIcon

70

一段可以将 TimeSpan 转换为用户可读 UI 文本的代码,可以直接复制粘贴

引言

程序员和科学家喜欢数字,用户却不喜欢,因此,我采取措施将我的 Web-UI 中的所有数字转换为颜色、大小(进度条等)、图标等。
日期和时间也不例外!

“发送于 2012/4/5 15:43” 这样的说法有很多问题

  1. 需要一段时间才能弄清楚,这已经是两年前了……
  2. 对于两年前的帖子,小时数真的有意义吗?
    即使日期也可能可以忽略不计。
  3. 没有人知道日期是 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(); 

您可以通过两个参数来控制输出

  1. partCount:表示您想要多少个非零部分。
  2. neglectionFactor:如果某个部分对整体值的影响不大,则不输出该部分,这意味着如果年份数很高,月份变得不重要,将不会显示。

注意(本地化)

该代码旨在在希伯来语中使用,但可以轻松翻译成任何其他语言和方言。
只需更改 Get*Text(int v) 函数以返回其他值即可。

© . All rights reserved.