首頁 > 後端開發 > Golang > 如何在 Go 中解組格式不正確的日期時間字串?

如何在 Go 中解組格式不正確的日期時間字串?

Mary-Kate Olsen
發布: 2024-11-04 18:17:01
原創
338 人瀏覽過

How to Unmarshal Incorrectly Formatted Datetime Strings in Go?

解組格式不正確的日期時間

背景

嘗試在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中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板