Функция длительности vbscript (vbs) - PullRequest
0 голосов
/ 28 апреля 2009

Существует ли функция для преобразования указанного числа секунд в формат недели, дня, часа, минуты и секунды в vbscript?

например: 969234 секунды = 1 неделя 4 дня 5 часов 13 минут 54 секунды

Ответы [ 2 ]

1 голос
/ 28 апреля 2009

Нет встроенной функции для этого.

Вот быстрый и грязный: -

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
1 голос
/ 28 апреля 2009
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"
...