Vous devez en effet rouler votre propre méthode de faire cela, comme JustLoren dit.
Ceci est une méthode d'extension que j'ai utilisée. C'est GateKiller script fait dans une méthode d'extension. Donc crédit complet à lui. Vous pouvez facilement le changer comme bon vous semble.
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";
}
Prise intéressante. Je ne suis pas certain que vous allez obtenir une réponse au-delà de "rouler la vôtre" :) – JustLoren
Une des toutes premières questions sur ce site a traité ce problème: http://stackoverflow.com/questions/11/how- do-i-calculate-relative-time –
Et pour un moyen d'y parvenir en SQL (si jamais vous voulez): http://stackoverflow.com/questions/50149/best-way-to-convert-datetime-to -n-hours-ago-in-sql – CraigTP