33 lines
577 B
Go
33 lines
577 B
Go
package winrm
|
|
|
|
import (
|
|
"fmt"
|
|
"time"
|
|
)
|
|
|
|
// formatDuration formats the given time.Duration into an ISO8601
|
|
// duration string.
|
|
func formatDuration(duration time.Duration) string {
|
|
// We're not supporting negative durations
|
|
if duration.Seconds() <= 0 {
|
|
return "PT0S"
|
|
}
|
|
|
|
h := int(duration.Hours())
|
|
m := int(duration.Minutes()) - (h * 60)
|
|
s := int(duration.Seconds()) - (h*3600 + m*60)
|
|
|
|
res := "PT"
|
|
if h > 0 {
|
|
res = fmt.Sprintf("%s%dH", res, h)
|
|
}
|
|
if m > 0 {
|
|
res = fmt.Sprintf("%s%dM", res, m)
|
|
}
|
|
if s > 0 {
|
|
res = fmt.Sprintf("%s%dS", res, s)
|
|
}
|
|
|
|
return res
|
|
}
|