我想将正常时间格式(例如 00:00:00 或 HH:MM:SS)转换为秒,例如使用 VBScript 将 1 分 20 秒变为 80 秒。
如果有人可以帮助我为 VBScript 输入时间格式,例如 00:00:00 或 HH:MM:SS。
答案 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
<块引用>
注意:在处理日期时尽量避免使用字符串操作,因为结果可能无法预测,并且会受到系统区域设置更改的影响。唯一应该在输出最终格式化结果时使用字符串操作。