Date sous forme de texte simple (par exemple aujourd'hui, hier, 1 semaine) en .Net
-
21-09-2019 - |
Question
Quelqu'un at-il une fonction simple à la main pour convertir une date à une chaîne simple (en utilisant .Net)?
par exemple. 14-Oct-09 lirait "Aujourd'hui", 13-Oct-09 lirait "Yesterday" et 7-Oct-09 lirait "1 semaine" etc ...
Cordialement, Tim
La solution
Vous auriez en effet rouler votre propre méthode de le faire, comme JustLoren dit.
Ceci est une méthode d'extension que je l'ai utilisé. Il est le script GateKiller de fait dans une méthode d'extension. crédit si plein de lui. Vous pouvez facilement changer pour mais vous le voulez.
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";
}
Autres conseils
Quelque chose comme cette méthode d'extension?
public static string Stringfy(this DateTime date)
{
if ((DateTime.Now - date.Date).TotalDays == 0)
return "Today";
if ((DateTime.Now - date.Date).TotalDays == 1)
return "Yesterday";
// ...
return "A long time ago, in a galaxy far far away...";
}
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow