关于c#:格式化DateTime

Format DateTime like StackoverFlow

本问题已经有最佳答案,请猛点这里访问。

Possible Duplicates:
Fuzzy date algorithm
How do I calculate relative time?

你好,

如何像这样格式化日期时间?

1分钟前

1小时前

8月15日15:00提问


你要做的第一件事就是确定日期的不同。

在您的DateTime上使用subtract()方法。它返回一个TimeSpan,方便您的需要。

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()模式。如果没有你喜欢的东西,你可以自己指定。