Feedback

TimeUtils.ToHumanReadableTimespan

Sprache: C#

Konvertiert eine Zeitspanne von Millisekunden zu einer sinnvollen Größe mit Einheit.

public static string ToHumanReadableTimespan(long miliseconds)
    {
        const int SEC = 1000;
        const int MIN = 60*SEC;
        const int H = MIN*60;

        var timeSpan = TimeSpan.FromMilliseconds(miliseconds);

        if (miliseconds < 1000) return string.Format("{0} ms", timeSpan.Milliseconds);

        if (miliseconds/SEC < 60) return string.Format("{0} sec", timeSpan.Seconds);

        if (miliseconds/MIN < 60) return string.Format("{0}:{1:00} min", timeSpan.Minutes, timeSpan.Seconds);

        if (miliseconds/H < 24) return string.Format("{0}:{1:00}:{2:00} hours", timeSpan.Hours, timeSpan.Minutes, timeSpan.Seconds);

        return string.Format("{0}:{1:00}:{2:00}:{3:00} days", timeSpan.Days, timeSpan.Hours, timeSpan.Minutes, timeSpan.Seconds);
    }

public static string ToHumanReadableTimespan(long miliseconds)
    {
        const int SEC = 1000;
        const int MIN = 60*SEC;
        const int H = MIN*60;

        var timeSpan = TimeSpan.FromMilliseconds(miliseconds);

        if (miliseconds < 1000) return string.Format("{0} ms", timeSpan.Milliseconds);

        if (miliseconds/SEC < 60) return string.Format("{0} sec", timeSpan.Seconds);

        if (miliseconds/MIN < 60) return string.Format("{0}:{1:00} min", timeSpan.Minutes, timeSpan.Seconds);

        if (miliseconds/H < 24) return string.Format("{0}:{1:00}:{2:00} hours", timeSpan.Hours, timeSpan.Minutes, timeSpan.Seconds);

        return string.Format("{0}:{1:00}:{2:00}:{3:00} days", timeSpan.Days, timeSpan.Hours, timeSpan.Minutes, timeSpan.Seconds);
    }

1 Kommentar

  1. Warum nimmst du nicht gleich ein TimeSpan entgegen? Wenn man eine Zeitspanne hat, dann hat man i.d.R. auch ein solches Objekt und nicht nur eine Zahl.
    Außerdem, warum rufst du nicht einfach ToString mit dem String-Format Parameter auf? Das ist meiner Meinung nach einfacher zu lesen.