Maison  >  Article  >  développement back-end  >  Comment convertir les dates de chaîne MongoDB en heure de départ ?

Comment convertir les dates de chaîne MongoDB en heure de départ ?

Susan Sarandon
Susan Sarandonoriginal
2024-11-16 14:54:02373parcourir

How to Convert MongoDB String Dates to Go Time?

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

  • SetBSON() : remplit la structure avec la valeur brute MongoDB et analyse le champ EndDateStr dans EndDate champ de type time.Time.
  • GetBSON() : définit le champ EndDateStr à partir du champ EndDate et renvoie la structure clientConfigData pour l'enregistrement.

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn