第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

Go中靈活的日期/時(shí)間解析(在解析中添加默認(rèn)值)

Go中靈活的日期/時(shí)間解析(在解析中添加默認(rèn)值)

Go
qq_花開花謝_0 2023-06-19 17:19:43
關(guān)于這個(gè)問題,我想解析在命令行上傳遞給 Go 程序的日期/時(shí)間。目前,我使用flag包來填充一個(gè)字符串變量ts,然后使用以下代碼:if ts == "" {    config.Until = time.Now()} else {    const layout = "2006-01-02T15:04:05"    if config.Until, err = time.Parse(layout, ts); err != nil {        log.Errorf("Could not parse %s as a time string: %s. Using current date/time instead.", ts, err.Error())        config.Until = time.Now()    }}這可以正常工作,前提是用戶傳遞了完全正確的格式 - 例如2019-05-20T09:07:33或類似的格式。但是,如果可能的話,我想要的是可以靈活地傳遞 eg 2019-05-20T09:07or2019-05-20T09或什至2019-05-20傳遞,并在適當(dāng)?shù)那闆r下將小時(shí)、分鐘和秒默認(rèn)為 0。有沒有一種理智的方法可以做到這一點(diǎn)?1基本上不需要我編寫自己的解析器更新我有一個(gè)解決方案,雖然它不是特別優(yōu)雅,但它似乎適用于我可能遇到的大多數(shù)情況。package mainimport (    "fmt"    "time")func main() {    const layout = "2006-01-02T15:04:05"    var l string    var input string    for _, input = range []string{"2019-05-30", "2019-05-30T16", "2019-05-30T16:04", "2019-05-30T16:04:34",                                "This won't work", "This is extravagantly long and won't work either"} {        if len(input) < len(layout) {            l = layout[:len(input)]        } else {            l = layout        }        if d, err := time.Parse(l, input); err != nil {            fmt.Printf("Error %s\n", err.Error())        } else {            fmt.Printf("Layout %-20s gives time %v\n", l, d)        }    }}
查看完整描述

3 回答

?
慕桂英4014372

TA貢獻(xiàn)1871條經(jīng)驗(yàn) 獲得超13個(gè)贊

只需嘗試每種格式,直到一種有效。如果無效,則返回錯(cuò)誤。


var formats = []string{"2006-01-02T15:04:05", "2006-01-02", ...}


func parseTime(input string) (time.Time, error) {

    for _, format := range formats {

        t, err := time.Parse(format, input)

        if err == nil {

            return t, nil

        }

    }

    return time.Time{}, errors.New("Unrecognized time format")

}


查看完整回答
反對(duì) 回復(fù) 2023-06-19
?
波斯汪

TA貢獻(xiàn)1811條經(jīng)驗(yàn) 獲得超4個(gè)贊

在事先不知道格式的情況下解析許多日期字符串。使用掃描儀讀取字節(jié)并使用狀態(tài)機(jī)查找格式。

t,?err?:=?dateparse.ParseAny("3/1/2014")


查看完整回答
反對(duì) 回復(fù) 2023-06-19
?
慕蓋茨4494581

TA貢獻(xiàn)1850條經(jīng)驗(yàn) 獲得超11個(gè)贊

在您描述的特定場(chǎng)景中,您可以檢查輸入日期戳字符串的長(zhǎng)度,并在其末尾添加適當(dāng)長(zhǎng)度的零內(nèi)容以對(duì)應(yīng)于您的layout. 所以基本上你可以將盡可能多的字符串"T00:00:00"(從末尾計(jì)數(shù))附加到輸入,因?yàn)榕c格式字符串相比長(zhǎng)度缺失layout。



查看完整回答
反對(duì) 回復(fù) 2023-06-19
  • 3 回答
  • 0 關(guān)注
  • 216 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)