Does anyone have a simple function at hand for converting a date to a simple date-relative string in .NET?
E.g. 14-Oct-09 would read "Today", 13-Oct-09 would read "Yesterday" and 7-Oct-09 would read "1 Week Ago" etc.
use date. weekday() Return the day of the week as an integer, where Monday is 0 and Sunday is 6.
In traditional American usage, dates are written in the month–day–year order (e.g. September 21, 2022) with a comma before and after the year if it is not at the end of a sentence, and time in 12-hour notation (7:03 am).
There is no Date DataType. However you can use DateTime. Date to get just the Date.
You would indeed have to roll your own method of doing this, like JustLoren said.
This is an extension method I've been using. It is GateKiller script made into an extension method. So full credit to him. You could easily change it to however you want it.
public static string ToTimeSinceString(this DateTime value)
{
const int SECOND = 1;
const int MINUTE = 60 * SECOND;
const int HOUR = 60 * MINUTE;
const int DAY = 24 * HOUR;
const int MONTH = 30 * DAY;
TimeSpan ts = new TimeSpan(DateTime.Now.Ticks - value.Ticks);
double seconds = ts.TotalSeconds;
// Less than one minute
if (seconds < 1 * MINUTE)
return ts.Seconds == 1 ? "one second ago" : ts.Seconds + " seconds ago";
if (seconds < 60 * MINUTE)
return ts.Minutes + " minutes ago";
if (seconds < 120 * MINUTE)
return "an hour ago";
if (seconds < 24 * HOUR)
return ts.Hours + " hours ago";
if (seconds < 48 * HOUR)
return "yesterday";
if (seconds < 30 * DAY)
return ts.Days + " days ago";
if (seconds < 12 * MONTH) {
int months = Convert.ToInt32(Math.Floor((double)ts.Days / 30));
return months <= 1 ? "one month ago" : months + " months ago";
}
int years = Convert.ToInt32(Math.Floor((double)ts.Days / 365));
return years <= 1 ? "one year ago" : years + " years ago";
}
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With