从PowerShell中的TimeSpan对象添加时间

问题描述 投票:0回答:1

这真让我发疯,这一定是我所缺少的简单事物。

我只是试图从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值起作用。为什么不能使用$hoursTotalHours应该是正常的double,即使将其强制转换为double[double]$hours = New-Timespan...)也没有任何改变。

powershell datetime variables timespan
1个回答
0
投票

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

© www.soinside.com 2019 - 2024. All rights reserved.