2

重複の可能性:
ファジー日付アルゴリズム
相対時間を計算するにはどうすればよいですか?

やあ、

SO のように日時をフォーマットする方法は?

1分前

1時間前

8 月 15 日 15:00 に質問

4

3 に答える 3

2

最初に行う必要があるのは、日付の違いを特定することです。

で Subtract() メソッドを使用しますDateTime。を返しますTimeSpan。これは、ニーズに便利です。

TimeSpan mySpan = DateTime.Now.Subtract( myPostedDate );

次に、最も重要なゼロ以外の時間要素を見つける必要があります。日を扱っている場合、物事は簡単です。小さい額面は、もう少し作業が必要です。コードが含まれています。

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
于 2010-01-26T12:03:16.713 に答える
1

jQuery の timeago プラグインを C#に移植することに興味があるかもしれません

于 2010-01-26T11:33:45.113 に答える
0

DateTime.ToString()パターンを確認してください。気に入ったものがない場合は、自分で指定できます。

于 2010-01-26T11:45:06.490 に答える