【问题标题】:Convert Seconds to Weeks, Days, Hours, Minutes, Seconds in VBScript在 VBScript 中将秒转换为周、天、小时、分钟、秒
【发布时间】:2009-04-28 10:16:55
【问题描述】:

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

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

【问题讨论】:

    标签: vbscript time duration


    【解决方案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"
    

    【讨论】:

      【解决方案2】:

      没有内置函数可以做到这一点。

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

      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
      

      【讨论】:

        【解决方案3】:

        你想使用timer伪变量:

        start = timer
        Rem do something long
        duration_in_seconds = timer - start
        wscript.echo "Duration " & duration_in_seconds & " seconds."
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2012-01-06
          • 2017-05-10
          • 1970-01-01
          • 2012-09-27
          • 1970-01-01
          相关资源
          最近更新 更多