Wie konvertiert man MongoDB-String-Daten in Go-Zeit?

Susan Sarandon
Freigeben: 2024-11-16 14:54:02
Original
369 Leute haben es durchsucht

How to Convert MongoDB String Dates to Go Time?

Zugriff auf MongoDB von Go: Konvertieren des MongoDB-String-Datums in Go-Zeit

Ihr Codeausschnitt zeigt, dass Sie von Go aus auf MongoDB zugreifen und darauf stoßen Eine Herausforderung bei der Konvertierung von MongoDB-Stringdaten in Go Time. Die bereitgestellte clientConfigData-Struktur enthält ein EndDate-Feld, das als Zeichenfolge deklariert ist und dem Speicherformat von MongoDB entspricht. Sie müssen jedoch auf dieses Datum als Go-Time-Wert zugreifen.

Benutzerdefiniertes Marshalling und Unmarshaling

Um diese Konvertierung zu erreichen, sollten Sie die Implementierung einer benutzerdefinierten Marshalling- und Unmarshaling-Logik in Betracht ziehen. Durch die Implementierung der bson.Getter- und bson.Setter-Schnittstellen erhalten Sie Kontrolle über die Werttransformationen während Marshalling- und Unmarshaling-Prozessen.

Erweiterte clientConfigData-Struktur

Erweitern Sie die clientConfigData-Struktur um ein zusätzliches EndDate-Feld vom Typ time.Time (den gewünschten Wert) einzuschließen Typ):

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
}
Nach dem Login kopieren

Benutzerdefinierte Marshalling- und Unmarshaling-Funktionen

Definieren Sie benutzerdefinierte Marshalling- und Unmarshaling-Funktionen für die 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
}
Nach dem Login kopieren

Explanation

  • SetBSON(): Füllt die Struktur mit dem rohen MongoDB-Wert und analysiert das EndDateStr-Feld in das EndDate-Feld des Typs time.Time.
  • GetBSON(): Setzt das EndDateStr-Feld aus dem EndDate-Feld und gibt die Struktur „clientConfigData“ zum Speichern zurück.

Verwendung der neuen Felder

Jetzt können Sie das Feld „EndDate“ verwenden, um auf das Datum als Go-Time-Wert zuzugreifen . Die benutzerdefinierte Marshalling- und Unmarshaling-Logik konvertiert beim Lesen und Speichern von Daten in MongoDB automatisch zwischen den Zeichenfolgen- und Zeitformaten.

Das obige ist der detaillierte Inhalt vonWie konvertiert man MongoDB-String-Daten in Go-Zeit?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage