Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimana Mengendalikan Penukaran Tarikh Apabila Mengakses MongoDB dari Go?

Bagaimana Mengendalikan Penukaran Tarikh Apabila Mengakses MongoDB dari Go?

Mary-Kate Olsen
Mary-Kate Olsenasal
2024-11-23 11:00:56457semak imbas

How to Handle Date Conversions When Accessing MongoDB from Go?

Mengakses MongoDB daripada Go: Working with Dates

Apabila mengakses MongoDB daripada Go, anda mungkin menghadapi situasi di mana anda perlu menukar jenis data, seperti mengendalikan tarikh yang disimpan sebagai rentetan dalam MongoDB tetapi memerlukannya sebagai masa Go. Objek masa. Begini cara untuk menangani perkara ini:

Logik Marshal/Unmarshal Tersuai

Untuk mengendalikan penukaran jenis semasa marshaling/unmarshaling antara MongoDB dan Go, laksanakan logik tersuai menggunakan antara muka bson.Getter dan bson.Setter.

Menyesuaikan clientConfigData

Pertama, lanjutkan clientConfigData dengan medan tambahan EndDate masa jenis.Masa:

type clientConfigData struct {
    SMTPAssoc  int       `bson:"smtp_assoc"`
    PlanType   string    `bson:"plan_type"`
    EndDateStr string    `bson:"end_date"`
    EndDate    time.Time `bson:"-"`
}

Melaksanakan Logik Tersuai

Melaksanakan logik marshal/unmarshal tersuai dalam SetBSON() dan GetBSON() kaedah:

const endDateLayout = "2006-01-02 15:04:05"

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(): Menghuraikan medan EndDateStr, menetapkan medan EndDate sebagai masa.Masa.
  • GetBSON(): Menukar EndDate kepada rentetan dalam format yang ditentukan sebelum menyimpan.

Elakkan Limpahan Tindanan

Untuk mengelakkan limpahan tindanan, cipta jenis perantaraan saya baharu dalam kedua-dua kaedah, membenarkan penukaran tanpa rekursi yang tidak berkesudahan.

Logik marshaling dan unmarshaling tersuai ini membolehkan anda menukar tarikh antara rentetan dan masa .Format masa apabila mengakses MongoDB daripada Go.

Atas ialah kandungan terperinci Bagaimana Mengendalikan Penukaran Tarikh Apabila Mengakses MongoDB dari Go?. 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