time.Parse の動作を理解する
Go の time パッケージの Parse メソッドを使用して文字列を time.Time インスタンスに変換すると、次のようになります。タイムゾーンを考慮し、適切な形式文字列を指定することが重要です。次のコードは、タイムゾーンの処理が正しくないため、期待どおりに文字列を time.Time に変換できません:
import ( "fmt" "time" ) func main() { const longForm = "2013-05-13T18:41:34.848Z" t, _ := time.Parse(longForm, "2013-05-13 18:41:34.848 -0700 PDT") fmt.Println(t) }
このコードでは、期待される値ではなく 0001-01-01 00:00:00 0000 UTC が出力されます。 2013-05-13 01:41:34.848 0000 UTC.
解決策: 正しい書式文字列を指定してください
誤った動作は、書式指定文字列が正しくないことが原因で発生します。 longForm は、入力文字列の形式に一致するように定義する必要があります:
const longForm = "2006-01-02 15:04:05 -0700"
この形式文字列は、入力文字列の形式に対応します: 2013-05-13 18:41:34.848 -0700 PDT。
更新されたコード:
import ( "fmt" "log" "time" ) func main() { const longForm = "2006-01-02 15:04:05 -0700" t, err := time.Parse(longForm, "2013-05-13 18:41:34.848 -0700 PDT") if err != nil { log.Fatal(err) } fmt.Println(t) }
正しい形式文字列を使用すると、コードは予想時刻を出力するようになります: 2013-05-13 01:41:34.848 0000 UTC .
以上がタイムゾーンが関係している場合、Go の `time.Parse` が文字列を `time.Time` インスタンスに変換できないのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。