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 }
説明
新しいフィールドの使用
これで、EndDate フィールドを使用して日付にアクセスできるようになります。ゴータイム値。カスタムのマーシャリングおよびアンマーシャリング ロジックは、MongoDB へのデータの読み取りおよび保存時に、文字列形式と時刻形式の間で自動的に変換します。
以上がMongoDB 文字列の日付を Go 時刻に変換するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。