Формат TimeSpan больше 24 часов

Скажем, я конвертирую несколько секунд в объект TimeSpan следующим образом:

Dim sec = 1254234568
Dim t As TimeSpan = TimeSpan.FromSeconds(sec)

Как мне отформатировать объект TimeSpan в следующем формате:

>105hr 56mn 47sec

Есть ли встроенная функция или мне нужно написать пользовательскую функцию?

34
задан Ahmed Abdelhameed 23 January 2019 в 10:32
поделиться

4 ответа

Что ж, проще всего отформатировать это самостоятельно, например

return string.Format("{0}hr {1}mn {2}sec",
                     (int) span.TotalHours,
                     span.Minutes,
                     span.Seconds);

В VB:

Public Shared Function FormatTimeSpan(span As TimeSpan) As String
    Return String.Format("{0}hr {1}mn {2}sec", _
                         CInt(Math.Truncate(span.TotalHours)), _
                         span.Minutes, _
                         span.Seconds)
End Function

Я не знаю, упростит ли это форматирование TimeSpan в .NET 4.

55
ответ дан 27 November 2019 в 16:35
поделиться

string.Format ("{0} час {1} мин {2} сек", (int) t.TotalHours, t.Minutes, t.Seconds);

4
ответ дан 27 November 2019 в 16:35
поделиться

Вам может понадобиться вычислить часы. Диапазон часов в TimeSpan.ToString составляет всего 0-23.

Самое худшее, что вам потребуется, это выполнить необработанное форматирование строки а-ля Jon Skeet.

1
ответ дан 27 November 2019 в 16:35
поделиться

Попробуйте эту функцию:

Public Shared Function GetTimeSpanString(ByVal ts As TimeSpan) As String
        Dim output As New StringBuilder()

        Dim needsComma As Boolean = False

        If ts = Nothing Then

            Return "00:00:00"

        End If

        If ts.TotalHours >= 1 Then
            output.AppendFormat("{0} hr", Math.Truncate(ts.TotalHours))
            If ts.TotalHours > 1 Then
                output.Append("s")
            End If
            needsComma = True
        End If

        If ts.Minutes > 0 Then
            If needsComma Then
                output.Append(", ")
            End If
            output.AppendFormat("{0} m", ts.Minutes)
            'If ts.Minutes > 1 Then
            '    output.Append("s")
            'End If
            needsComma = True
        End If

        Return output.ToString()

 End Function       

Convert A Timespan To Hours And Minutes

0
ответ дан 27 November 2019 в 16:35
поделиться
Другие вопросы по тегам:

Похожие вопросы: