这真让我发疯,这一定是我所缺少的简单事物。
我只是试图从TimeSpan
对象获取总时数,并使用该总时数添加到DateTime
对象中。
$mytime = "1/1/2020 10:00:00"
$hours = (New-TimeSpan -Start $mytime).TotalHours
(Get-Date $mytime).AddHours($hours)
结果是
2020年2月5日,星期三,11:25:37 AM
2020年2月5日,星期三,11:25:37 AM
在上面,时间没有改变!但是,如果我只为$hours
分配一个值,它将正常工作。
$mytime = "1/1/2020 10:00:00"
$hours = 100
(Get-Date $mytime).AddHours($hours)
2020年2月5日,星期三,11:25:37 AM
[2020年1月5日,星期日,5:00:01 AM
我已经尝试了各种方式的变量赋值和强制转换,但是无论如何我都无法使TotalHours
值起作用。为什么不能使用$hours
? TotalHours
应该是正常的double
,即使将其强制转换为double
([double]$hours = New-Timespan...
)也没有任何改变。
TotalHours
包括小数小时。 $hours
的值将类似于844.1311....
。 TotalHours
的值基本上是:
$ts = New-TimeSpan -Start $mytime
$ts.Ticks / [TimeSpan]::TicksPerHour
如果需要整数值,请尝试:
$mytime = "1/1/2020 10:00:00"
$hours = [math]::Truncate((New-TimeSpan -Start $mytime).TotalHours)
(Get-Date $mytime).AddHours($hours)
我尚未测试过,但是如果将来可能会使用Math.Floor()
,则可能需要使用$mytime
。