Pregunta

¿Alguien tiene una función simple a mano para convertir una fecha en una cadena simple (utilizando .Net)?

por ejemplo. 14-Oct-09 se leería "Ayer" "Hoy", 13-Oct-09 leería y 7-Oct-09 se leería "Hace 1 semana", etc ...

Cheers, Tim

¿Fue útil?

Solución

Se podría de hecho tener que rodar su propio método de hacer esto, como JustLoren dijo.

Este es un método de extensión He estado usando. Es la escritura GateKiller convertido en un método de extensión. crédito de modo completo a él. Desde aquí se puede cambiarlo a lo que le apetezca a él.

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";
}

Otros consejos

Algo parecido a este método de extensión?

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...";
}
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top