"إذا أراد العامل أن يؤدي عمله بشكل جيد، فعليه أولاً أن يشحذ أدواته." - كونفوشيوس، "مختارات كونفوشيوس. لو لينجونج"
الصفحة الأمامية > برمجة > كيفية تحليل سلسلة زمنية بمنطقة زمنية محددة في Go؟

كيفية تحليل سلسلة زمنية بمنطقة زمنية محددة في Go؟

تم النشر بتاريخ 2024-11-15
تصفح:562

How to Parse a Time String with a Specific Time Zone in Go?

تحليل الوقت بمنطقة زمنية محددة

يمكنك استخدام time.ParseTime() للحصول على بنية زمنية من سلسلة. يأخذ سلسلة تخطيط كوسيطة، والتي تحدد تنسيق سلسلة الإدخال. يجب أن تتطابق سلسلة التخطيط مع تنسيق سلسلة الإدخال تمامًا.

إذا كنت بحاجة إلى تحليل سلسلة زمنية تتضمن منطقة زمنية، فيمكنك استخدام time.ParseInLocation(). تأخذ هذه الوظيفة سلسلة تخطيط وموقعًا كوسائط. يمكن أن يكون الموقع قيمة time.Location أو سلسلة تمثل اسم المنطقة الزمنية.

على سبيل المثال، يقوم التعليمة البرمجية التالية بتوزيع سلسلة زمنية تتضمن منطقة زمنية:

import (
    "fmt"
    "time"
)

func main() {
    const layout = "2006-01-02 15:04"
    const timeStr = "2012-07-09 05:02:00  0000 CEST"

    t, err := time.ParseInLocation(layout, timeStr, time.Local)
    if err != nil {
        fmt.Println(err)
        return
    }

    fmt.Println(t)
}

سيقوم هذا الكود بطباعة الإخراج التالي:

2012-07-09 05:02:00  0000 CEST

ستعمل وظيفة time.ParseInLocation() على تحليل الوقت السلسلة وفقًا لسلسلة التخطيط والموقع المحدد. في هذه الحالة، سلسلة التخطيط هي "2006-01-02 15:04" والموقع هو "CEST". ستُرجع الدالة time.ParseInLocation() قيمة time.Time التي تمثل الوقت الذي تم تحليله.

إذا لم تحدد موقعًا، فستستخدم الدالة time.ParseInLocation() المنطقة الزمنية المحلية. وهذا يعني أنه سيتم تحويل الوقت الذي تم تحليله إلى المنطقة الزمنية المحلية.

يمكنك تجنب ذلك عن طريق إنشاء وقت. قيمة الوقت بالوقت والمنطقة الزمنية الصحيحة:

import (
    "fmt"
    "time"
)

func main() {
    const layout = "2006-01-02 15:04"
    const timeStr = "2012-07-09 05:02:00"
    const timeZone = "CEST"

    pz, err := time.LoadLocation(timeZone)
    if err != nil {
        fmt.Println(err)
        return
    }

    t, err := time.Parse(layout, timeStr)
    if err != nil {
        fmt.Println(err)
        return
    }

    T := t.In(pz)

    fmt.Println(T)
}

سيقوم هذا الرمز بطباعة الإخراج التالي:

2012-07-09 05:02:00  0200 CEST

يظهر إخراج هذا الرمز الوقت بالشكل الصحيح المنطقة الزمنية.

أحدث البرنامج التعليمي أكثر>

تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.

Copyright© 2022 湘ICP备2022001581号-3