亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

使用 Go 解析 ISO 8601 持續時間(例如 PT90M)

使用 Go 解析 ISO 8601 持續時間(例如 PT90M)

Go
慕森王 2022-07-11 16:01:08
有什么簡單的方法可以將 ISO 8601 字符串持續時間(P(n)Y(n)M(n)DT(n)H(n)M(n)S)轉換為time.Duration?來自維基百科,免費的百科全書例如,“P3Y6M4DT12H30M5S”表示“三年六個月四天十二小時三十分鐘五秒”的持續時間。
查看完整描述

2 回答

?
PIPIONE

TA貢獻1829條經驗 獲得超9個贊

標準庫中沒有 API,但是有一個 3rd 方庫可以將 ISO 8601 持續時間添加到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

}


查看完整回答
反對 回復 2022-07-11
?
Cats萌萌

TA貢獻1805條經驗 獲得超9個贊

發現現有的解決方案不太令人滿意,我創建了自己的模塊來解析 ISO 8601 持續時間并將它們直接轉換為time.Duration. 希望對你有幫助。:)

示例用法:https ://go.dev/play/p/Nz5akjy1c6W


查看完整回答
反對 回復 2022-07-11
  • 2 回答
  • 0 關注
  • 286 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號