Laden...

TimeSpan Format mit mindestens 2-Stelliger Stunde

Erstellt von ByteDevil vor 4 Jahren Letzter Beitrag vor 4 Jahren 883 Views
ByteDevil Themenstarter:in
132 Beiträge seit 2013
vor 4 Jahren
TimeSpan Format mit mindestens 2-Stelliger Stunde

Hallo 😃

Ich formatiere mir für ein Binding mit diesem Converter ein TimeSpan in das Format hh:mm

public class SignedTimeSpanToStringConverter : IValueConverter
    {
        public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
        {
            TimeSpan timeSpan = (TimeSpan)value;
            if (timeSpan >= TimeSpan.Zero)
                return timeSpan.ToString(@"hh\:mm");
            else
                return "-" + timeSpan.ToString(@"hh\:mm");
        }
        public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture) => throw new NotImplementedException();
    }

Die TimeSpan wird meistens geringer sein als 100h, kann aber auch deutlich drüber sein und sowohl positiv als auch negativ. Ist sie nun größer als 100h, wird die erste Ziffer abgehackt. Wie kann ich 9h : 15 min als 09:15 ausgeben und 144h : 15 min als 144:15?

C
2.121 Beiträge seit 2010
vor 4 Jahren

Was kommt bei Timespan = 30 Stunden heraus?
Habe es nicht nachgeprüft, aber ich kann mir gut vorstellen dass der TimeSpan alles größer als 23,x Stunden auf Tage umbricht.
Am besten rechnest du dir die Zahlenwerte selber um.

1.029 Beiträge seit 2010
vor 4 Jahren

Hi,

nun - das Property TotalHours sieht hierfür vielversprechend aus:


public static string FormatHours(TimeSpan ts) {
        return string.Format($"{Math.Floor(ts.TotalHours):00}:{ts.Minutes:00}");
    }

(TotalHours ist ein Double, der bei dieser Formatierung gerundet würde - deshalb muss von vor Ausgabe abrunden)

LG

ByteDevil Themenstarter:in
132 Beiträge seit 2013
vor 4 Jahren

nun - das Property TotalHours sieht hierfür vielversprechend aus

Perfekt, danke 😃 Daran hab ich nicht gedacht. Musste nur noch den Absolutbetrag von den Minuten nehmen, da die sonst auch noch ein Minus davor haben wenn es negativ ist.

ByteDevil Themenstarter:in
132 Beiträge seit 2013
vor 4 Jahren

Was kommt bei Timespan = 30 Stunden heraus?
Habe es nicht nachgeprüft, aber ich kann mir gut vorstellen dass der TimeSpan alles größer als 23,x Stunden auf Tage umbricht.
Am besten rechnest du dir die Zahlenwerte selber um.

Nein da kam vorher tatsächlich 30:00 raus