首頁 > 後端開發 > Golang > 從 Go 存取 MongoDB 時如何處理日期轉換?

從 Go 存取 MongoDB 時如何處理日期轉換?

Mary-Kate Olsen
發布: 2024-11-23 11:00:56
原創
515 人瀏覽過

How to Handle Date Conversions When Accessing MongoDB from Go?

從Go 存取MongoDB:使用日期

從Go 存取MongoDB 時,您可能會遇到需要轉換資料類型的情況,例如處理儲存為MongoDB 中的字串,但要求它們作為Go time.Time 物件。以下是解決此問題的方法:

自訂編組/解組邏輯

要在MongoDB 和Go 之間編組/解組期間處理類型轉換,請使用bson.Getter 和bson .Setter 介面實作自訂邏輯。

自訂clientConfigData

首先,使用擴充clientConfigData time.Time 類型的附加欄位EndDate:

type clientConfigData struct {
    SMTPAssoc  int       `bson:"smtp_assoc"`
    PlanType   string    `bson:"plan_type"`
    EndDateStr string    `bson:"end_date"`
    EndDate    time.Time `bson:"-"`
}
登入後複製

實作自訂邏輯

說明
const endDateLayout = "2006-01-02 15:04:05"

func (c *clientConfigData) SetBSON(raw bson.Raw) (err error) {
    type my clientConfigData
    if err = raw.Unmarshal((*my)(c)); err != nil {
        return
    }
    c.EndDate, err = time.Parse(endDateLayout, c.EndDateStr)
    return
}

func (c *clientConfigData) GetBSON() (interface{}, error) {
    c.EndDateStr = c.EndDate.Format(endDateLayout)
    type my *clientConfigData
    return my(c), nil
}
登入後複製

SetBSON():解析EndDateStr字段,將EndDate欄位設為time.Time。
  • GetBSON():轉換EndDate 為先前指定格式的字串
  • 避免堆疊溢位

為了避免堆疊溢出,請在兩個方法中建立一個新的中間my 類型,從而允許轉換而無需無限遞歸。

此自訂封送處理解群組邏輯可讓您在字串和時間之間轉換日期。從 Go 存取 MongoDB 時的時間格式。

以上是從 Go 存取 MongoDB 時如何處理日期轉換?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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