【问题标题】:How do you create a timespan from milliseconds in powershell?如何在 powershell 中从毫秒创建时间跨度?
【发布时间】:2016-06-02 04:58:11
【问题描述】:

New-Timespan 没有“MilliSeconds”参数,如何从毫秒创建 TimeSpan?

【问题讨论】:

    标签: powershell


    【解决方案1】:

    使用TimeSpan structureFromMilliseconds static method...

    PS> [TimeSpan]::FromMilliseconds(10)
    
    
    Days              : 0
    Hours             : 0
    Minutes           : 0
    Seconds           : 0
    Milliseconds      : 10
    Ticks             : 100000
    TotalDays         : 1.15740740740741E-07
    TotalHours        : 2.77777777777778E-06
    TotalMinutes      : 0.000166666666666667
    TotalSeconds      : 0.01
    TotalMilliseconds : 10
    

    TimeSpan 最终将其持续时间表示为 Ticks 的数字,因此,如果您更愿意这样想,您可以将毫秒数乘以 TicksPerMillisecond constant 并将其传递给 the constructor that accepts the number of ticks(那里是没有FromTicks()方法)...

    PS> New-Object -TypeName 'TimeSpan' -ArgumentList (10 * [TimeSpan]::TicksPerMillisecond)
    
    Days              : 0
    Hours             : 0
    Minutes           : 0
    Seconds           : 0
    Milliseconds      : 10
    Ticks             : 100000
    TotalDays         : 1.15740740740741E-07
    TotalHours        : 2.77777777777778E-06
    TotalMinutes      : 0.000166666666666667
    TotalSeconds      : 0.01
    TotalMilliseconds : 10
    
    
    PS> [TimeSpan]::new(10 * [TimeSpan]::TicksPerMillisecond)
    
    Days              : 0
    Hours             : 0
    Minutes           : 0
    Seconds           : 0
    Milliseconds      : 10
    Ticks             : 100000
    TotalDays         : 1.15740740740741E-07
    TotalHours        : 2.77777777777778E-06
    TotalMinutes      : 0.000166666666666667
    TotalSeconds      : 0.01
    TotalMilliseconds : 10
    

    【讨论】:

      【解决方案2】:

      正数:[timespan]'0:0:0.001'[timespan]'00:00:00:00.001'

      负数:[timespan]'-0:0:0.001'[timespan]'-00:00:00:00.001'

      指定 4 或 5 个 [int32] 数字将被解释为(可选天)小时、分钟、秒和毫秒。

      如需更完整的答案,请参阅 https://devblogs.microsoft.com/scripting/weekend-scripter-understanding-timespan-objects/ 并向下滚动至 TimeSpan 构造函数。

      指定的每个时间单位必须保持在其通常的限制范围内(0-23 小时,0-59 分钟和秒,0-999 毫秒)。天数范围(如果指定)是 0-10675199。

      可能的最高 [timespan] 值似乎是 [timespan]'10675199:2:48:5.477'(已在 PowerShell 5.1 和 pwsh 7.1.1 上验证)。

      【讨论】:

      • 所以关闭。 [TimeSpan]::MaxValue.ToString() 产生 10675199.02:48:05.4775807,因此您在最大 TimeSpan 值上大约减少了半毫秒(或 5,807 ticks);你可以通过[TimeSpan]::MaxValue - [TimeSpan] '10675199:2:48:5.477'看到这个。
      【解决方案3】:
      $Start_DateTime = Get-Date -format HH:mm:ss.fff
      ...... other commnads
      $Finish_DateTime = Get-Date -format HH:mm:ss.fff
      $TimeDiff = New-TimeSpan $Start_DateTime $Finish_DateTime 
      IF ($TimeDiff.Seconds -lt 0) 
      { $Hrs = ($TimeDiff.Hours) + 23
        $Mins = ($TimeDiff.Minutes) + 59
        $Secs = ($TimeDiff.Seconds) + 59 
        $Milliseconds = ($TimeDiff.Milliseconds) + 59 
      }
      ELSE 
      { $Hrs = $TimeDiff.Hours
        $Mins = $TimeDiff.Minutes
        $Secs = $TimeDiff.Seconds 
        $Milliseconds = $TimeDiff.Milliseconds
      } 
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-08-29
        • 2011-07-20
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-04-22
        相关资源
        最近更新 更多