2015-09-15 11 views
6

この例検討:提供された形式で表される時間を解析できないのはなぜですか?

package main 

import (
    "fmt" 
    "time" 
) 

func main() { 
    fmt.Println(time.Parse(time.RFC3339, time.RFC3339)) 
} 

出力である:

0001-01-01 00:00:00 +0000 UTC parsing time "2006-01-02T15:04:05Z07:00": extra text: 07:00 

なぜtime.Parse()値のようなレイアウトを扱うことができないのですか?ここには何が欠けていますか?


UPDATE:

fmt.Println(time.Parse(time.RFC3339, "2015-09-15T11:50:00Z")) 

なぜできないtime.Parse():はそれを修正するタイムゾーン値をカットオフ(ゾーンからの時間を区切る 'Z' はなく)レイアウト文字列としてtime.RFC3339を使用している場合は、タイムゾーン情報を処理しますか?

http://play.golang.org/p/p3fHfJNHVK


UPDATE: JimBの答えRFC3339からの読み取りに私を導いて、私はさらに明確にこれらの例を見つけました:ここ

は、インターネットの日付/時刻形式の例をいくつか示します。

1985-04-12T23:20:50.52Z

これはUTCで 4月12日、1985年の第23回時間20分後と50.52秒を表します。 UTC(太平洋 標準時)から00:

1996-12-19T16:39:57-08:00

これは-08のオフセットと 12月19日、1996年の第16回時間後の39分57秒を表します。これはUTCで1996-12-20T00:39:57Z に相当することに注意してください。

+1

それは役に立ちますか? https://github.com/golang/go/issues/9346 –

+0

はい、参考になりました。ありがとう! – mdwhatcott

答えて

10

time.RFC3339フォーマットは、フォーマット文字列自体が有効な時間でない場合です。 Zには時間文字列のオフセットを設定することはできませんが、仕様文字列にはどちらのタイプのタイムゾーン指定も含めることができるため、フォーマット文字列には両方の文字列が含まれます。

これらの両方があり、有効なRFC3339時間:

"2015-09-15T14:00:12-00:00" 
"2015-09-15T14:00:13Z" 

と時間パッケージには、同じRFC3339形式の文字列を使用してそれらの両方を解析できるようにする必要があります。

関連する問題