【发布时间】:2016-06-02 04:58:11
【问题描述】:
New-Timespan 没有“MilliSeconds”参数,如何从毫秒创建 TimeSpan?
【问题讨论】:
标签: powershell
New-Timespan 没有“MilliSeconds”参数,如何从毫秒创建 TimeSpan?
【问题讨论】:
标签: powershell
使用TimeSpan structure 的FromMilliseconds 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
【讨论】:
正数:[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'看到这个。
$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
}
【讨论】: