Question

Vous avez peut-être remarqué que certaines applications Web (par exemple, certaines parties de GMail) dates d'affichage dans un format plus lisible par l'homme que simplement DD / MM / YYYY.

Par exemple, si j'ouvre un article de courrier du 23 (qui se trouve être il y a 3 jours au moment de l'écriture, je vais obtenir ce qui suit:

  

23 décembre (il y a 3 jours)

Je voudrais mettre en œuvre une logique similaire à cela dans ma propre application web.

Par exemple, lorsqu'il s'agit d'un objet TimeSpan .NET, je voudrais le convertir en texte comme suit:

  

2 mois

     

3 jours

Y at-il une bibliothèque .NET capable de le faire déjà?

Dans le cas contraire je pourrais construire quelque chose de base et open-source il.


Je l'ai fait ici un début de base:

public static class TimeSpanHelpers
{
    public static string ToHumanReadableString(
        this TimeSpan timeSpan)
    {
        if (timeSpan.TotalDays > 30)
            return (timeSpan.TotalDays / 30) + " month(s)";

        if (timeSpan.TotalDays > 7)
            return (timeSpan.TotalDays / 7) + " week(s)";

        return (timeSpan.TotalDays) + " day(s)";
    }
}

Autres conseils

Essayez Humanizer http://humanizr.net/

TimeSpan.FromMilliseconds(1299630020).Humanize(3) => "2 weeks, 1 day, 1 hour"

// in de-DE culture
TimeSpan.FromDays(1).Humanize() => "Ein Tag"
TimeSpan.FromDays(2).Humanize() => "2 Tage"

// in sk-SK culture
TimeSpan.FromMilliseconds(1).Humanize() => "1 milisekunda"

// and a lot more
DateTime.UtcNow.AddHours(2).Humanize() => "2 hours from now"
"case".ToQuantity(5) => "5 cases"
"man".ToQuantity(2) => "2 men"
122.ToWords() => "one hundred and twenty-two"
(.5).Gigabytes().Humanize() => "512 MB"
"Long text to truncate".Truncate(10) => "Long text…",
"Sentence casing".Transform(To.TitleCase) => "Sentence Casing"

Nuget:

Install-Package Humanizer

Une autre bibliothèque pour y parvenir: http://relativetime.codeplex.com/

(Disponible sur NuGet)

Je fini par utiliser cette méthode que je avais besoin pour soutenir les dates à venir comme 3 jours à partir de maintenant.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top