我想使用 VBScript 将数字(小于 3600)转换为 mm:ss 格式。我面临的主要问题是添加前导零,以防我得到一个数字。
例如:-
在尝试将 306 转换为 mm:ss 格式时,我得到的输出为 5:6 而不是 05:06。
这是我的代码..
entered_time = "306"
quotient = entered_time/60
quotient = Int(quotient)
MsgBox quotient
remainder = entered_time Mod 60
MsgBox remainder
time_format = quotient&":"&remainder
msgbox time_format
感谢您提前的帮助。
像这样尝试;)
intTotalSecs = 306
MsgBox intTotalSecs & "(s) ===> " & ConvertTime(intTotalSecs),vbinformation,"output time format as hh:mm:ss"
'************************************************************
Function ConvertTime(intTotalSecs)
Dim intHours,intMinutes,intSeconds,Time
intHours = intTotalSecs \ 3600
intMinutes = (intTotalSecs Mod 3600) \ 60
intSeconds = intTotalSecs Mod 60
ConvertTime = LPad(intHours) & " h : " & LPad(intMinutes) & " m : " & LPad(intSeconds) & " s"
End Function
'************************************************************
Function LPad(v)
LPad = Right("0" & v, 2)
End Function
'************************************************************
如果您的语言环境/区域设置合适,您只需执行以下操作:
>> setlocale "de-de"
>> secs = 308
>> ts = TimeSerial(0, 0, secs)
>> WScript.Echo FormatDateTime(ts, vbLongTime)
>>
00:05:08
如果这是不可能的,请在基于 .NET 的格式类中投入一些精力,例如这个。
简单的
if remainder < 10
怎么样?
是的,您可以调用这个函数:
Function TimePassed(t1, t2)
Dim t : t = DateDiff("s",t1,t2)
Dim hr, min, sec
t1=t
hr=t\3600
If len(hr)=1 Then hr="0" & hr
t=t mod 3600
min=t\60
If len(min)=1 Then min="0" & min
sec=t mod 60
If len(sec)=1 Then sec="0" & sec
TimePassed = hr & ":" & min & ":" & sec
End Function
Dim startDate : startDate = #2024/11/13 08:22:00#
Dim endDate : endDate = #2024/11/13 10:52:00#
Response.Write TimePassed(startDate, endDate)