namespace Utilities
{
public static class DateExtension
{
public static string TimeAgo(this DateTime date)
{
TimeSpan timeSince = DateTime.Now.Subtract(date);
if (timeSince.TotalMilliseconds < 1)
return "not yet";
if (timeSince.TotalMinutes < 1)
return "just now";
if (timeSince.TotalMinutes < 2)
return "1 minute ago";
if (timeSince.TotalMinutes < 60)
return string.Format("{0} minutes ago", timeSince.Minutes);
if (timeSince.TotalMinutes < 120)
return "1 hour ago";
if (timeSince.TotalHours < 24)
return string.Format("{0} hours ago", timeSince.Hours);
if (timeSince.TotalDays == 1)
return "yesterday";
if (timeSince.TotalDays < 7)
return string.Format("{0} days ago", timeSince.Days);
if (timeSince.TotalDays < 14)
return "last week";
if (timeSince.TotalDays < 21)
return "2 weeks ago";
if (timeSince.TotalDays < 28)
return "3 weeks ago";
if (timeSince.TotalDays < 60)
return "last month";
if (timeSince.TotalDays < 365)
return string.Format("{0} months ago", Math.Round(timeSince.TotalDays / 30));
if (timeSince.TotalDays < 730)
return "last year";
//last but not least...
return string.Format("{0} years ago", Math.Round(timeSince.TotalDays / 365));
}
}
class Program
{
static void Main(string[] args)
{
DateTime date;
date = DateTime.Now.AddSeconds(1);
Console.WriteLine(date.ToLongDateString() + " Time ago: " + date.TimeAgo());
date = DateTime.Now.AddSeconds(-5);
Console.WriteLine(date.ToLongDateString() + " Time ago: " + date.TimeAgo());
date = DateTime.Now.AddMinutes(-1);
Console.WriteLine(date.ToLongDateString() + " Time ago: " + date.TimeAgo());
date = DateTime.Now.AddMinutes(-5);
Console.WriteLine(date.ToLongDateString() + " Time ago: " + date.TimeAgo());
date = DateTime.Now.AddMinutes(-59);
Console.WriteLine(date.ToLongDateString() + " Time ago: " + date.TimeAgo());
date = DateTime.Now.AddHours(-1);
Console.WriteLine(date.ToLongDateString() + " Time ago: " + date.TimeAgo());
date = DateTime.Now.AddHours(-2);
Console.WriteLine(date.ToLongDateString() + " Time ago: " + date.TimeAgo());
date = DateTime.Now.AddHours(-23);
Console.WriteLine(date.ToLongDateString() + " Time ago: " + date.TimeAgo());
date = DateTime.Now.AddDays(-1);
Console.WriteLine(date.ToLongDateString() + " Time ago: " + date.TimeAgo());
date = DateTime.Now.AddDays(-2);
Console.WriteLine(date.ToLongDateString() + " Time ago: " + date.TimeAgo());
date = DateTime.Now.AddDays(-7);
Console.WriteLine(date.ToLongDateString() + " Time ago: " + date.TimeAgo());
date = DateTime.Now.AddDays(-14);
Console.WriteLine(date.ToLongDateString() + " Time ago: " + date.TimeAgo());
date = DateTime.Now.AddDays(-21);
Console.WriteLine(date.ToLongDateString() + " Time ago: " + date.TimeAgo());
date = DateTime.Now.AddMonths(-1);
Console.WriteLine(date.ToLongDateString() + " Time ago: " + date.TimeAgo());
date = DateTime.Now.AddMonths(-11);
Console.WriteLine(date.ToLongDateString() + " Time ago: " + date.TimeAgo());
date = DateTime.Now.AddYears(-1);
Console.WriteLine(date.ToLongDateString() + " Time ago: " + date.TimeAgo());
date = DateTime.Now.AddYears(-2);
Console.WriteLine(date.ToLongDateString() + " Time ago: " + date.TimeAgo());
Console.Read();
}
}
}