在Powershell中以30分钟为单位增加20倍小时数

wlp8pajw  于 2023-02-12  发布在  Shell
关注(0)|答案(3)|浏览(142)

我必须在我的应用程序中创建多个作业。这些作业应该从17:00开始间隔30分钟。我的难题是如何获得从17:00开始的小时和分钟(HH:MM)格式的20次??一旦我有这些时间,我可以循环所有作业间隔30分钟。谢谢
到目前为止我已经试过了

$ts = New-TimeSpan -Hours 17 -Minutes 00

但是向$ts添加分钟数不起作用

PS F:\> $ts.AddMinutes(30)
Method invocation failed because [System.TimeSpan] does not contain a method named 'addminutes'.
At line:1 char:1
+ $ts.AddMinutes(30)
+ ~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : InvalidOperation: (:) [], RuntimeException
    + FullyQualifiedErrorId : MethodNotFound
dw1jzc5e

dw1jzc5e1#

您只需添加新的时间跨度:

$newts = $ts + (New-TimeSpan -Minutes 30)
qaxu7uf2

qaxu7uf22#

您可以添加一个字符串,该字符串将自动转换为类型[timespan],因为左侧参数为[timespan]:

$ts = [timespan]'17:30'
$ts += '0:30'
$ts

Days              : 0
Hours             : 18
Minutes           : 0
Seconds           : 0
Milliseconds      : 0
Ticks             : 648000000000
TotalDays         : 0.75
TotalHours        : 18
TotalMinutes      : 1080
TotalSeconds      : 64800
TotalMilliseconds : 64800000
vc9ivgsu

vc9ivgsu3#

Paolo's helpful answer显示如何将时间间隔添加到现有时间间隔,其中+操作转换为[timespan]类型的.Add()方法。
相反,[datetime]/[datetimeoffset]类型具有.AddMinutes().AddMinutes()方法。
因此,您可以执行以下操作:

# Get today's date at 17:00 hours
$start = Get-Date -Hour 17 -Minute 0 -Second 0 -MilliSecond 0
# Loop 20 times and add 30 minutes each, and format as "HH:mm"
0..19 | ForEach-Object { $start.AddMinutes($_ * 30).ToString('HH:mm') }

输出:

17:00
17:30
18:00
18:30
19:00
19:30
20:00
20:30
21:00
21:30
22:00
22:30
23:00
23:30
00:00
00:30
01:00
01:30
02:00
02:30

相关问题