Possible Duplicates:
Fuzzy date algorithm
How do I calculate relative time?
Hi,
How-to format datetime like SO ?
1 minute ago
1 hour ago
asked Aug 15 at 15:00
Possible Duplicates:
Fuzzy date algorithm
How do I calculate relative time?
Hi,
How-to format datetime like SO ?
1 minute ago
1 hour ago
asked Aug 15 at 15:00
Check out DateTime.ToString() Patterns. If there isn't anything you like, you can specify it yourself.
First thing you need to do is determine the difference in dates.
Use the Subtract() method on your DateTime
. It returns a TimeSpan
, which is handy for your needs.
TimeSpan mySpan = DateTime.Now.Subtract( myPostedDate );
Then, you'll need to find the most significant non-zero time element. If you're dealing with days, things are easy. Smaller denominations require a little more work. Code included.
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