持续时间vbscript(vbs)功能

时间:2009-04-28 10:16:55

标签: vbscript time duration

是否有在vbscript中将指定秒数转换为星期/日/小时/分钟/秒时间格式的功能?

例如:969234秒= 1wk 4天5小时13分54秒

2 个答案:

答案 0 :(得分:1)

Dim myDate
dim noWeeks
dim noDays
dim tempWeeks
dim pos 
myDate = DateAdd("s",969234,CDate(0))

tempWeeks = FormatNumber(myDate / 7,10)
pos = instr(tempWeeks, ".")
if pos > 1 then
    tempWeeks = left(myDate, pos -1)
end if
noWeeks = Cint(tempWeeks)

noDays = Cint(((myDate / 7) - noWeeks) * 7)

wscript.echo noWeeks & "wk " & noDays & "days " & datepart("h", myDate) & "hrs " & datepart("n", myDate) & "mins " & datepart("s", myDate) & "secs"

答案 1 :(得分:1)

没有内置功能来做到这一点。

这是一个快速而又肮脏的问题: -

Function SecondsToString(totalSeconds)

    Dim work : work = totalSeconds

    Dim seconds
    Dim minutes
    Dim hours
    Dim days
    Dim weeks

    seconds = work Mod 60
    work = work \ 60
    minutes = work Mod 60
    work = work \ 60
    hours = work Mod 24
    work = work \ 24
    days = work Mod 7
    work = work \ 7
    weeks = work

    Dim s: s = ""
    Dim renderStarted: renderStarted = False

    If (weeks <> 0) Then
        renderStarted = True
        s = s & CStr(weeks)
        If (weeks = 1) Then
            s = s & "wk "
        Else
            s = s & "wks "
        End If
    End If

    If (days <> 0 OR renderStarted) Then
        renderStarted = True
        s = s & CStr(days)
        If (days = 1) Then
            s = s & "day "
        Else
            s = s & "days "
        End If
    End If

    If (hours <> 0 OR renderStarted) Then
        renderStarted = True
        s = s & CStr(hours)
        If (hours = 1) Then
            s = s & "hr "
        Else
            s = s & "hrs "
        End If
    End If

    If (minutes <> 0 OR renderStarted) Then
        renderStarted = True
        s = s & CStr(minutes)
        If (minutes = 1) Then
            s = s & "min "
        Else
            s = s & "mins "
        End If
    End If

    s = s & CStr(seconds)
    If (seconds = 1) Then
        s = s & "sec "
    Else
        s = s & "secs "
    End If

    SecondsToString = s

End Function