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

I s*_*ica 3 string powershell time type-conversion

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

我有以下代码:

$RunAfterHour = 7
$DelayInMinutes = 10
$RunScriptAfterTime = $RunAfterHour + $DelayInMinutes / 60    # 7:10 AM
"It's after $RunScriptAfterTime"
Run Code Online (Sandbox Code Playgroud)

哪个返回:

It's after 7.166666666666667
Run Code Online (Sandbox Code Playgroud)

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

It's after 7:10
Run Code Online (Sandbox Code Playgroud)

我试过了:

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

和其他人,但没有运气。

Mar*_*ndl 5

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

"It's after {0}:{1:D2}" -f $RunAfterHour, $DelayInMinutes
Run Code Online (Sandbox Code Playgroud)

输出:

It's after 7:10
Run Code Online (Sandbox Code Playgroud)

编辑以反映您的评论:

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

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

或完全:

[timespan]::FromHours($RunScriptAfterTime).ToString('t')
Run Code Online (Sandbox Code Playgroud)