解組格式不正確的日期時間
背景
嘗試在Go 中解析日期時間字串時使用time.Parse 時,如果時區偏移格式不正確,解析可能會失敗。具體來說,如果按照 RFC3339 的要求將偏移量指定為「0200」而不是「02:00」。
問題
給定一組包含以下內容的JSON 檔案偏移格式不正確的日期時間,我們如何在Go 中正確解組它們而不改變編組回JSON 的日期時間格式?
答案
自訂時間Field
為了處理有效且無效的偏移格式,我們可以定義自己的自訂時間欄位類型。這允許我們覆蓋預設的解組行為,並根據兩種預期格式之一手動解析日期時間字串。
範例實作
在此範例中,我們使用 UnmarshalJSON 方法來覆寫預設的解組行為。我們首先刪除日期時間字串周圍的所有引號,然後嘗試使用標準 time.RFC3339Nano 格式對其進行解析。如果失敗,我們也會嘗試解析錯誤的格式(“2006-01-02T15:04:05.999999999Z0700”)。
JSON 元資料中的 RFC3339Nano 格式
要指定 JSON 中的自訂時間欄位使用 RFC3339Nano 格式,我們可以簡單地使用與 UnmarshalJSON方法中相同的格式字串:
這表示時間欄位將表示為JSON 作為 RFC3339Nano 格式的字串。當封回 JSON 時,將使用 MyTime 類型的重寫 MarshalJSON 方法來確保保持正確的格式。
以上是如何在 Go 中解組格式不正確的日期時間字串?的詳細內容。更多資訊請關注PHP中文網其他相關文章!