Go에서 MongoDB 액세스: MongoDB 문자열 날짜를 Go 시간으로 변환
코드 스니펫을 보면 Go에서 MongoDB에 액세스하고 다음과 같은 문제가 발생함을 알 수 있습니다. MongoDB 문자열 날짜를 Go Time으로 변환하는 데 어려움이 있습니다. 제공된 clientConfigData 구조체에는 MongoDB의 저장 형식과 일치하는 문자열로 선언된 EndDate 필드가 포함되어 있습니다. 그러나 이 날짜를 Go Time 값으로 액세스해야 합니다.
사용자 정의 마샬링 및 역마샬링
이 변환을 수행하려면 사용자 정의 마샬링 및 역마샬링 논리 구현을 고려하세요. 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:"-"` // bson tag "-" excludes this field from MongoDB }
사용자 정의 마샬링 및 역마샬링 기능
클라이언트ConfigData에 대한 사용자 정의 마샬링 및 역마샬링 기능 정의 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 문자열 날짜를 이동 시간으로 변환하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!