[英]Increment hours by 30 minutes 20 times in Powershell
我必须在我的应用程序中创建多个作业。 从 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
您可以简单地添加一个新的时间跨度:
$newts = $ts + (New-TimeSpan -Minutes 30)
您可以添加一个将自动转换为类型 [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
Paolo 的有用答案显示了如何将时间跨度添加到现有时间跨度,其中+
操作转换为[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') }
Output:
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
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.