从 Go 访问 MongoDB:将 MongoDB 字符串日期转换为 Go 时间
您的代码片段显示您正在从 Go 访问 MongoDB 并遇到将 MongoDB 字符串日期转换为 Go Time 的挑战。提供的 clientConfigData 结构包含一个声明为字符串的 EndDate 字段,与 MongoDB 的存储格式匹配。但是,您需要将此日期作为 Go Time 值访问。
自定义编组和解组
要实现此转换,请考虑实现自定义编组和解组逻辑。通过实现 bson.Getter 和 bson.Setter 接口,您可以控制编组和解组过程中的值转换。
扩展 clientConfigData 结构
扩展 clientConfigData 结构包含一个 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 字段来访问日期作为 Go Time 值。当读取数据并将其保存到 MongoDB 时,自定义编组和解组逻辑将自动在字符串和时间格式之间进行转换。
以上是如何将 MongoDB 字符串日期转换为 Go 时间?的详细内容。更多信息请关注PHP中文网其他相关文章!