MongoDB 文字列の日付を Go 時刻に変換するにはどうすればよいですか?

Susan Sarandon
リリース: 2024-11-16 14:54:02
オリジナル
369 人が閲覧しました

How to Convert MongoDB String Dates to Go Time?

Go から MongoDB にアクセス: MongoDB 文字列日付を Go 時刻に変換

コード スニペットを見ると、Go から MongoDB にアクセスし、次のようなエラーが発生していることがわかります。 MongoDB 文字列の日付を Go Time に変換する際の課題。提供された clientConfigData 構造体には、MongoDB のストレージ形式と一致する文字列として宣言された EndDate フィールドが含まれています。ただし、この日付には Go Time 値としてアクセスする必要があります。

カスタム マーシャリングおよびアンマーシャリング

この変換を実現するには、カスタム マーシャリングおよびアンマーシャリング ロジックの実装を検討してください。 bson.Getter インターフェイスと bson.Setter インターフェイスを実装すると、マーシャリングおよびアンマーシャリング プロセス中の値の変換を制御できるようになります。

Extended clientConfigData Struct

clientConfigData struct を拡張します。 time.Time 型の追加の EndDate フィールドを含める (目的の値) type):

type clientConfigData struct {
    SMTPAssoc  int       `bson:"smtp_assoc"`
    PlanType   string    `bson:"plan_type"`
    EndDateStr string    `bson:"end_date"`
    EndDate    time.Time `bson:"-"` // bson tag "-" excludes this field from MongoDB
}
ログイン後にコピー

カスタム マーシャリング関数およびアンマーシャリング関数

clientConfigData のカスタム マーシャリング関数およびアンマーシャリング関数を定義します。 struct:

const endDateLayout = "2006-01-02 15:04:05" // Customizable date layout

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(): 構造体に生の MongoDB 値を設定し、EndDateStr フィールドを型の EndDate フィールドに解析します。 time.Time.
  • GetBSON(): EndDateStr フィールドを設定しますEndDate フィールドから取得し、保存用の clientConfigData 構造体を返します。

新しいフィールドの使用

これで、EndDate フィールドを使用して日付にアクセスできるようになります。ゴータイム値。カスタムのマーシャリングおよびアンマーシャリング ロジックは、MongoDB へのデータの読み取りおよび保存時に、文字列形式と時刻形式の間で自動的に変換します。

以上がMongoDB 文字列の日付を Go 時刻に変換するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート