Format DateTime like StackoverFlow
本问题已经有最佳答案,请猛点这里访问。
Possible Duplicates:
Fuzzy date algorithm
How do I calculate relative time?
你好,
如何像这样格式化日期时间?
1分钟前
1小时前
8月15日15:00提问
你要做的第一件事就是确定日期的不同。
在您的
1 | TimeSpan mySpan = DateTime.Now.Subtract( myPostedDate ); |
然后,您需要找到最重要的非零时间元素。如果你要处理好日子,事情很容易。面额较小需要做更多的工作。代码包括在内。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 | TimeSpan mySpan = DateTime.Now.Subtract(myRecorded); string myDenom = mySpan.Days > 0 ?"day" : mySpan.Hours > 0 ?"hour" : mySpan.Minutes > 0 ?"minute" :"second"; string myOutput = String.Empty; int myNumeral; // if we're dealing with days, a format string will suffice if (myDenom =="day") { // HH - 24 hour clock myOutput = String.Format("{0:MMM dd} at {0:HH}:{0:mm}", myRecorded); } else { // put the right denomination into myNumeral switch (myDenom) { case"second": myNumeral = mySpan.Seconds; break; case"minute": myNumeral = mySpan.Minutes; break; default: myNumeral = mySpan.Hours; break; } // add an s to myNumeral when > 1 myDenom += (myNumeral > 1) ?"s" : String.Empty; myOutput = String.Format("{0} {1} ago", myNumeral, myDenom); } // myOutput now contains formatted string |
您可能会对端口jquery的timeago插件感兴趣。#
查看datetime.toString()模式。如果没有你喜欢的东西,你可以自己指定。