簡體   English   中英

前往:time.Parse()問題

[英]Go: time.Parse() issue

我有以下代碼:

timeLocal := "01/July/2015:18:12:25 +0900"
inFormat := "02/January/2006:15:04:05 -0700"
parsed, err := time.Parse(inFormat, timeLocal)
if err != nil {
    log.Fatal("Time format was not recognized!")
}

現在,解析工作正常。 但是當我跑步時:

fmt.Println(timeLocal)
fmt.Println(inFormat)
fmt.Println(parsed)

輸出為:

01/July/2015:18:12:25 +0900
02/January/2006:15:04:05 -0700
2015-07-01 18:12:25 +0900 +0900

第二個+0900應該存在嗎? 我在做什么愚蠢的事情? 抱歉,這真是漫長的一天,我看不到我所缺少的。

哦,整個文件在這里:

package main

import (
    "fmt"
    "time"
    "log"
)

func main() {
    timeLocal := "01/July/2015:18:12:25 +0900"
    inFormat := "02/January/2006:15:04:05 -0700"
    parsed, err := time.Parse(inFormat, timeLocal)
    if err != nil {
        log.Fatal("Time format was not recognized!")
    }

    fmt.Println(timeLocal)
    fmt.Println(inFormat)
    fmt.Println(parsed)
}

Time.String使用的默認格式是:

2006-01-02 15:04:05.999999999 -0700 MST

注意“ MST”部分。 由於您未提供區域名稱,因此格式只是將其“名稱”與偏移相同,即“ +0900”。 如果將其更改為“ +0000”,則會看到這確實是時區名稱:

2015-07-01 18:12:25 +0000 UTC

如果您不想這樣做,只需使用另一種格式進行打印:

myFmt := "2006-01-02 15:04:05.999999999 -0700"
fmt.Println(parsed.Format(myFmt))

如果你看的文檔time.Time你會看到默認的輸出格式是什么:

字符串返回使用格式字符串格式化的時間:

“ 2006-01-02 15:04:05.999999999 -0700 MST”

現在,您應該看到第二個+0900在做什么-這是一個位置(時區)名稱。 由於您的輸入格式沒有名稱,因此只需重復一個偏移量即可。

您可以通過更改輸入格式以解析位置名稱來提供名稱。 另外,如果不需要,您可以提供不打印名稱的輸出格式。

您修改的示例:

package main

import (
    "fmt"
    "time"
    "log"
)

func main() {
    timeLocal := "01/July/2015:18:12:25 +0900 XYZ"
    inFormat := "02/January/2006:15:04:05 -0700 MST"
    parsed, err := time.Parse(inFormat, timeLocal)
    if err != nil {
        log.Fatal("Time format was not recognized!")
    }

    fmt.Println(timeLocal)
    fmt.Println(inFormat)
    fmt.Println(parsed) // 2015-07-01 18:12:25 +0900 XYZ
    fmt.Println(parsed.Format("02/January/2006:15:04:05 -0700"))
}

http://play.golang.org/p/xVGvlt-M5B

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM