Key*_*rys 5 duration iso8601 go
有没有什么简单的方法可以将 ISO 8601 字符串持续时间 ( P(n)Y(n)M(n)DT(n)H(n)M(n)S) 转换为time.Duration?
例如,“P3Y6M4DT12H30M5S”代表“三年六个月四天十二小时三十分五秒”的持续时间。
标准库中没有 API,但有一个 3rd 方库可以将 ISO 8601 持续时间添加到 a time.Time:https : //godoc.org/github.com/senseyeio/duration#Duration.Shift。
ISO 8601 持续时间通常不能转换为 a,time.Duration因为它取决于基数time.Time。
https://play.golang.org/p/guybDGoJVrT
package main
import (
"fmt"
"time"
"github.com/senseyeio/duration"
)
func main() {
d, _ := duration.ParseISO8601("P1D")
today := time.Now()
tomorrow := d.Shift(today)
fmt.Println(today.Format("Jan _2")) // Nov 11
fmt.Println(tomorrow.Format("Jan _2")) // Nov 12
}
Run Code Online (Sandbox Code Playgroud)