繁体   English   中英

在 Powershell 中以 30 分钟递增 20 次

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM