Go の time パッケージでは、time.Parse 関数を使用して文字列を time.Time 値に変換します。ただし、特にタイムゾーンを扱う場合には、期待した結果が得られない場合があります。この不一致は、time.Parse.
に指定された形式文字列が正しくないことが原因である可能性があります。目的の変換を確実に行うには、time.Parse 関数で指定された形式に従うことが重要です。この形式は、次のように表される基準時刻に基づいています。
Mon Jan 2 15:04:05 MST 2006
基準時刻に一致する形式文字列を作成することで、信頼性の高い変換を実現できます。たとえば、次のコードについて考えてみましょう。
package main 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") if err != nil { log.Fatal(err) } fmt.Println(t) }
この例では、形式文字列 longForm は、日付と時刻のコンポーネントとタイムゾーン オフセットを対応させることによって、基準時間形式と一致します。その結果、time.Parse 関数は文字列を、予想される UTC タイムゾーンの time.Time 値に正常に変換します。
以上がGo の「time.Parse」が一貫性のない時間変換結果を生成するのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。