如何格式化各种格式的日期?

时间:2010-12-03 23:53:30

标签: c# formatting

我今天注意到,在我的WP7上的Twitter应用程序中,显示了twits并列出了他们的时间。但是,这是我真正喜欢的:

如果在最后几秒内制作了一个twit,则会显示列表框项目,例如。 5秒前 如果它是在最后几分钟内制成的,那么它就会显示出来。 23分钟前 同样的方式,今天显示这个词 如果是在任何先前的日期,它会显示实际的日期时间。

这种格式适用于任何平台(Outlook做类似的事情)。有没有人写过他们可以共享的扩展方法或帮助函数来实现这种输出?

谢谢, PRATIK

3 个答案:

答案 0 :(得分:1)

Scott Mitchell前几天在www.asp.net的主页上刊登了一篇文章,内容涉及格式化日期。

这篇文章是你可以使用的各种格式化字符串的标准,但他讨论了他创建的一个自定义方法来解决这种称为.ToRelativeDateString()的问题。该实现包含在文章附带的可下载示例中:

答案 1 :(得分:0)

我不确定您是否使用java,但PrettyTime是您的库。 您也可以使用joda-time或.net等价noda-time在一定程度上实现此目的。以下是例如使用joda-time打印

  

周二下午2点

DateTime dt = new DateTime(2005, 9, 20, 14, 30, 0, 0);
DateTimeFormatter f = new DateTimeFormatterBuilder()
.appendLiteral(“On “)
.appendDayOfWeekText()
.appendLiteral(“ at “)
.appendClockhourOfHalfday(1)
.appendHalfdayOfDayText()
.toFormatter();

String str = f.print(dt);
// Output: On Tuesday at 2PM

答案 2 :(得分:0)

我实际上为此编写了一组类,它与.NET中的国际化集成在一起。由于它与文化联系在一起,因此您可以轻松地拥有不同的变化。例如“10秒前”,如果你是英国人,或“10 sekunder sedan”,如果你有瑞典文化。就这么简单。

您可以在以下网址下载:

I18n Extensions - .NET4 Library