如何使用 VBScript 将时间格式例如 00:01:00 转换为 00:01:00 = 60 秒等秒?

时间:2021-05-15 04:26:27

标签: vbscript

我想将正常时间格式(例如 00:00:00 或 HH:MM:SS)转换为秒,例如使用 VBScript 将 1 分 20 秒变为 80 秒。

如果有人可以帮助我为 VBScript 输入时间格式,例如 00:00:00 或 HH:MM:SS。

2 个答案:

答案 0 :(得分:0)

也许是这样的:


Title = "Converting Time Format [HH:mm:ss] to seconds"

Do 
    strInput = InputBox("Enter format time like HH:mm:ss",Title,"00:01:20")
Loop Until IsValid_Format_Time(strInput) = True

Msgbox strInput & " = "& Convert_Time_Seconds(strInput) & " seconds",vbInformation,Title

MyTime = Convert_Time_Seconds(strInput)
MsgBox MyTime & " = " & Convert_Min_Sec(MyTime),vbInformation,Title

'-----------------------------------------------------------------------------
Function Convert_Min_Sec(MyTime)
    Const SECONDS_IN_DAY    = 86400
    Const SECONDS_IN_HOUR   = 3600
    Const SECONDS_IN_MINUTE = 60
    seconds = Round(MyTime, 2)
    If seconds < SECONDS_IN_MINUTE Then
        Convert_Min_Sec = seconds & " seconds "
        Exit Function
    End If
    If seconds < SECONDS_IN_HOUR Then 
        minutes = seconds / SECONDS_IN_MINUTE
        seconds = seconds MOD SECONDS_IN_MINUTE
        Convert_Min_Sec = Int(minutes) & " minutes " & seconds & " seconds "
        Exit Function
    End If
    If seconds < SECONDS_IN_DAY Then
        hours   = seconds / SECONDS_IN_HOUR
        minutes = (seconds MOD SECONDS_IN_HOUR) / SECONDS_IN_MINUTE
        seconds = (seconds MOD SECONDS_IN_HOUR) MOD SECONDS_IN_MINUTE
        Convert_Min_Sec = Int(hours) & " hours " & Int(minutes) & " minutes " & seconds & " seconds "
        Exit Function
    End If
End Function
'-----------------------------------------------------------------------------
Function Convert_Time_Seconds(Time)
    actualTime = Split(time,":")
    TotalSeconds = (Int(actualTime(0))) * 60 * 60 + (Int(actualTime(1))) * 60 + (Int(actualTime(2)))
    Convert_Time_Seconds=TotalSeconds
End Function
'-----------------------------------------------------------------------------
Function IsValid_Format_Time(MyTime)
    Set RegEx= New RegExp
    With RegEx
        .Pattern = "^([0-1]?[0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9]$"
        If .Test(MyTime)= True then
            IsValid_Format_Time = True
        end if
    End With
End Function
'-----------------------------------------------------------------------------

答案 1 :(得分:0)

实现此目的的最佳方法是使用 VBScript 中可用的 in-built date-time functions。关键是使用Hour()Minute()Second()函数将Date subtype值转换为代表各种单位(小时、分钟和秒)的整数。一旦我们将它们全部转换为一个共同的值(如秒)只需要一些基本的数学。

Option Explicit

Function ConvertTimeToSeconds(value)
    Dim dateTime: dateTime = TimeValue(value)
    Dim numOfHours: numOfHours = Hour(dateTime)
    Dim numOfMinutes: numOfMinutes = Minute(dateTime)
    Dim numOfSeconds: numOfSeconds = Second(dateTime)
    ConvertTimeToSeconds = (((numOfHours * 60) * 60) + (numOfMinutes * 60) + numOfSeconds)
End Function

Call WScript.Echo("Number of Seconds = " & ConvertTimeToSeconds("00:01:20"))

输出:

Number of Seconds = 80
<块引用>

注意:在处理日期时尽量避免使用字符串操作,因为结果可能无法预测,并且会受到系统区域设置更改的影响。唯一应该在输出最终格式化结果时使用字符串操作。


有用的链接