Rumah >pembangunan bahagian belakang >Golang >Bagaimana untuk Menukar Tarikh Rentetan MongoDB kepada Masa Pergi?

Bagaimana untuk Menukar Tarikh Rentetan MongoDB kepada Masa Pergi?

Susan Sarandon
Susan Sarandonasal
2024-11-16 14:54:02451semak imbas

How to Convert MongoDB String Dates to Go Time?

Mengakses MongoDB daripada Go: Menukar MongoDB String Date to Go Time

Coretan kod anda mendedahkan bahawa anda sedang mengakses MongoDB daripada Go dan menemui cabaran dalam menukar tarikh rentetan MongoDB kepada Masa Pergi. Struktur clientConfigData yang disediakan termasuk medan EndDate yang diisytiharkan sebagai rentetan, sepadan dengan format storan MongoDB. Walau bagaimanapun, anda perlu mengakses tarikh ini sebagai nilai Masa Pergi.

Marshaling dan Unmarshaling Tersuai

Untuk mencapai penukaran ini, pertimbangkan untuk melaksanakan logik marshaling dan unmarshaling tersuai. Dengan melaksanakan antara muka bson.Getter dan bson.Setter, anda mendapat kawalan ke atas transformasi nilai semasa proses marshaling dan unmarshaling.

Struktur clientConfigData Extended

Lanjutkan struct clientConfigData untuk memasukkan medan TamatTarikh tambahan bagi masa jenis.Masa (jenis nilai yang diingini):

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
}

Fungsi Marshaling dan Unmarshaling Tersuai

Tentukan fungsi marshaling dan unmarshaling tersuai untuk struct 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
}

Penjelasan

  • SetBSON(): Mengisi struct dengan nilai MongoDB mentah dan menghuraikan medan EndDateStr ke dalam EndDate medan masa jenis.Masa.
  • GetBSON(): Menetapkan medan EndDateStr daripada medan EndDate dan mengembalikan struct clientConfigData untuk disimpan.

Menggunakan Medan Baharu

Kini, anda boleh menggunakan medan EndDate untuk mengakses tarikh sebagai nilai Go Time. Logik marshaling dan unmarshaling tersuai akan menukar secara automatik antara format rentetan dan masa apabila membaca dan menyimpan data ke MongoDB.

Atas ialah kandungan terperinci Bagaimana untuk Menukar Tarikh Rentetan MongoDB kepada Masa Pergi?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn