Рассчитать разницу во времени для элемента управления контентом выбора даты

Я пытаюсь определить разницу во времени между 2 отдельными элементами управления контентом выбора даты в word-vba. Результат отображается в элементе управления содержимым обычного текста. В настоящее время я могу получить результат, но с трудом производя разницу во времени в формате «h:mm:ss». Любая помощь будет оценена

1 ответ

  1. Поскольку VBA не имеет встроенной функции для форматирования timespan, вам необходимо самостоятельно рассчитать отдельные компоненты, такие как дни, часы, минуты, секунды, например, используя следующую функцию:

    Public Function FormattedDateDiff(date1 As ContentControl, date2 As ContentControl) As String
    
        Dim dateDiffInSeconds As Long
        Dim dd As Long
        Dim hh As Integer
        Dim mm As Integer
        Dim ss As Integer
        Dim ss_remaining As Long
    
        dateDiffInSeconds = Abs(dateDiff("s", date1.Range.Text, date2.Range.Text))
    
        dd = dateDiffInSeconds \ 86400
        ss_remaining = dateDiffInSeconds Mod 86400
    
        hh = ss_remaining \ 3600
        ss_remaining = ss_remaining Mod 3600
    
        mm = ss_remaining \ 60
        ss = ss_remaining Mod 60
    
        If dd > 0 Then
            FormattedDateDiff = dd & " days, "
        End If
    
        FormattedDateDiff = FormattedDateDiff & TimeSerial(hh, mm, ss_remaining)
    
    End Function