重複の可能性:
ファジー日付アルゴリズム
相対時間を計算するにはどうすればよいですか?
やあ、
SO のように日時をフォーマットする方法は?
1分前
1時間前
8 月 15 日 15:00 に質問
最初に行う必要があるのは、日付の違いを特定することです。
で 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
jQuery の timeago プラグインを C#に移植することに興味があるかもしれません
DateTime.ToString()パターンを確認してください。気に入ったものがない場合は、自分で指定できます。