Maison > Article > développement back-end > Comment convertir les dates de chaîne MongoDB en heure de départ ?
Accès à MongoDB depuis Go : conversion de la date de la chaîne MongoDB en heure de départ
Votre extrait de code révèle que vous accédez à MongoDB depuis Go et que vous rencontrez un défi dans la conversion des dates de chaîne MongoDB en Go Time. La structure clientConfigData fournie inclut un champ EndDate déclaré sous forme de chaîne, correspondant au format de stockage de MongoDB. Cependant, vous devez accéder à cette date en tant que valeur Go Time.
Marshaling et Unmarshaling personnalisés
Pour réaliser cette conversion, envisagez de mettre en œuvre une logique de marshaling et de démarshaling personnalisée. En implémentant les interfaces bson.Getter et bson.Setter, vous prenez le contrôle des transformations de valeurs pendant les processus de marshaling et de démarshaling.
Struct clientConfigData étendu
Étendez la structure clientConfigData pour inclure un champ EndDate supplémentaire de type time.Time (le type de valeur souhaité) :
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 }
Fonctions de marshaling et de démarshaling personnalisées
Définir des fonctions de marshaling et de démarshaling personnalisées pour la structure clientConfigData :
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 }
Explication
Utilisation des nouveaux champs
Maintenant, vous pouvez utiliser le champ EndDate pour accéder à la date en tant que valeur Go Time. La logique de marshaling et de démarshaling personnalisée convertira automatiquement entre les formats de chaîne et d'heure lors de la lecture et de l'enregistrement des données dans MongoDB.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!