Maison > développement back-end > Golang > 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
Libérer: 2024-11-16 14:54:02
original
472 Les gens l'ont consulté

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
}
Copier après la connexion

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
}
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal