gpt4 book ai didi

powershell - Powershell格式的持续时间,以小时和分钟为单位

转载 作者:行者123 更新时间:2023-12-03 00:34:05 25 4
gpt4 key购买 nike

我正在尝试将TimeSpan的字符串输出格式化为$h Hours $m Minutes,以解决复数问题。现在,我有下面的代码很好用;但是,当TimeSpan少于一个小时时,它将显示为0 $m minutes

Function FormatDuration ([TimeSpan]$Duration) {
[string]$DurationStr = [math]::floor($Duration.TotalMinutes/60).ToString()
if ([math]::floor($Duration.TotalMinutes/60) -eq 1) {
$DurationStr = $DurationStr+" hour"
} elseif ([math]::floor($Duration.TotalMinutes/60) -ne 0) {
$DurationStr = $DurationStr+" hours"
}
if ($Duration.Minutes -eq 1){
$DurationStr = $DurationStr+" "+$Duration.Minutes+" minute"
# Does not display minutes if value is 0
} elseif ($Duration.Minutes -ne 0) {
$DurationStr = $DurationStr+" "+$Duration.Minutes+" minutes"
}
return $DurationStr
}

我尝试查找是否有人解决了这个问题,但是我能找到的最接近的是 solution中的zuallauz' this C# thread

不幸的是,TimeSpans在Powershell中的行为似乎有所不同,它们将分别显示天和小时,这意味着25小时45分钟的TimeSpan将存储为:
New-TimeSpan -Hours 25 -Minutes 45

Days : 1
Hours : 1
Minutes : 45
Seconds : 0
Milliseconds : 0
Ticks : 927000000000
TotalDays : 1.07291666666667
TotalHours : 25.75
TotalMinutes : 1545
TotalSeconds : 92700
TotalMilliseconds : 92700000

谁能指出正确的方向来解决这个问题?我的第一个想法是将小时和分钟的处理分开,然后在最后而不是在每个if-else语句处将它们连接起来。

编辑:

借助于Sambardo的 solution,我能够创建以下功能:
Function FormatDuration ([TimeSpan]$Duration) {
$h = $Duration.Days * 24 + $Duration.Hours
$m = $Duration.Minutes

switch ($h) {
0 {$HourStr=$null}
1 {$HourStr="$h hour"}
{$_ -ge 1} {$HourStr="$h hours"}
}
switch ($m) {
0 {$MinuteStr=$null}
1 {$MinuteStr="$m minute"}
{$_ -ge 1} {$MinuteStr="$m minutes"}
}
if ($HourStr -gt 0 -and $MinuteStr -gt 0) {
[String]$DurationStr=$HourStr+" "+$MinuteStr
} else {
$DurationStr=$HourStr+$MinuteStr
}

return $DurationStr
}

谢谢大家的帮助!

最佳答案

也许我缺少有关您的问题的信息,但是为什么不将天数转换为小时,然后检查小时数是否大于0来调整您的字符串呢?

$TimeSpan = New-TimeSpan -Minutes 45
$h = $TimeSpan.Days * 24 + $TimeSpan.Hours
$m = $TimeSpan.Minutes
if($h -gt 0){"$h hours $m minutes"}
else{"$m minutes"}

关于powershell - Powershell格式的持续时间,以小时和分钟为单位,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49659795/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com