如何从powershell中的毫秒创建时间跨度?

如何从powershell中的毫秒创建时间跨度?,powershell,Powershell,New Timespan不接受“毫秒”参数,如何从毫秒创建Timespan?使用 TimeSpan最终将其持续时间表示为个数,因此,如果您愿意这样想,可以将毫秒数乘以,并将其传递给(没有FromTicks()方法) 正:[timespan]'0:0:0.001'或[timespan]'00:00:00.001' 否定:[timespan]'-0:0:0.001'或[timespan]'-00:00:00.001' 指定4或5[int32]数字会被解释为(可选的天、小时、分钟、秒和毫秒) 有关更完

New Timespan不接受“毫秒”参数,如何从毫秒创建Timespan?

使用

TimeSpan
最终将其持续时间表示为个数,因此,如果您愿意这样想,可以将毫秒数乘以,并将其传递给(没有
FromTicks()
方法)


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

否定:[timespan]'-0:0:0.001'[timespan]'-00:00:00.001'

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

有关更完整的答案,请参阅并向下滚动至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
,因此您大约需要半毫秒(或5807)才能获得最大
TimeSpan
值;您可以通过
[TimeSpan]:MaxValue-[TimeSpan]'10675199:2:48:5.477'
看到这一点。
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
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
$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
}