格式字符串表示输出中的小时数为H:MM

时间:2017-05-05 13:16:57

标签: string powershell time type-conversion

如何将表示小时数的字符串转换为输出结果的同一命令中的H:MM格式

我有这段代码:

$RunAfterHour = 7
$DelayInMinutes = 10
$RunScriptAfterTime = $RunAfterHour + $DelayInMinutes / 60    # 7:10 AM
"It's after $RunScriptAfterTime"

返回:

It's after 7.166666666666667

但是我想将输出格式化为时间,所以看起来像这样:

It's after 7:10

我试过了:

"It's after (Get-Date $RunScriptAfterTime -format 't')"
[datetime]::ParseExact($RunScriptAfterTime, 'h.mmmmmmm',$null).ToString('t')

其他人但没有运气。

1 个答案:

答案 0 :(得分:4)

由于你已经有了小时和分钟,你可以将其格式化:

"It's after {0}:{1:D2}" -f $RunAfterHour, $DelayInMinutes

<强>输出:

It's after 7:10

编辑反映您的评论:

由于您只有几小时的时间($RunScriptAfterTime),因此您可以使用静态 [timespan]::FromHours方法:

$timespan = [timespan]::FromHours($RunScriptAfterTime)
"It's after {0}:{1:D2}" -f $timespan.Hours, $timespan.Minutes

或者完全:

[timespan]::FromHours($RunScriptAfterTime).ToString('t')