الذهاب تنسيق التاريخ والوقت

تعرف على كيفية تنسيق تاريخ في Go ، باستخدام ثوابت التنسيق أو تنسيق مخصص

في Go ، يمكن تحديد الوقت الحالي باستخدامtime.Now()، المقدمة منtimeصفقة.

t := time.Now()

سيؤدي ذلك إلى طباعة التوقيت المحلي للنظام. هل تريد UTC بدلاً من ذلك؟ ألحق.UTC():

يمكن تنسيق الوقت باستخدام ملفtime.Format()طريقة:

t := time.Now().UTC()

تريد الطابع الزمني؟

t := time.Now().Unix()

استخدم تنسيقًا مخصصًا

مثال على التنسيق بتنسيق مخصص هو:

fmt.Println(t.Format("2006-01-02 15:04:05"))

الذي - التي2006-01-02 15:04:05السلسلة تبدو غريبة ، أليس كذلك؟ ليس الأمر كما لو كان عام 2006 الآن! لكنها ستطبع (وقت كتابة هذا التقرير)2017-01-16 12:53:51

إذا كنت جديدًا على Go ، فسيبدو هذاللغايةغريب.

إليك الشرح: تنسيق الوقت في Go فريد ومختلف عما ستفعله باللغات الأخرى. بدلاً من وجود تنسيق تقليدي لطباعة التاريخ ، يستخدم Go التاريخ المرجعي20060102150405الذي يبدو بلا معنى ولكنه في الواقع له سبب ، لأنه1 2 3 4 5 6في Posixdateيأمر:

Mon Jan 2 15:04:05 -0700 MST 2006
0   1   2  3  4  5              6

كانت المنطقة الزمنية في المنتصف هي7(لست متأكدًا حقًا من سبب عدم اختيارهمMon Jan 2 03:04:05 -0600 MST 2007، على فكرة)

مرجع تاريخي مثير للاهتمام:https://github.com/golang/go/issues/444

استخدم ثوابت التنسيق

يوفر Go فيtimeحزم بعض الثوابت المفيدة للتنسيقات الشائعة الاستخدام:

const (
        ANSIC       = "Mon Jan _2 15:04:05 2006"
        UnixDate    = "Mon Jan _2 15:04:05 MST 2006"
        RubyDate    = "Mon Jan 02 15:04:05 -0700 2006"
        RFC822      = "02 Jan 06 15:04 MST"
        RFC822Z     = "02 Jan 06 15:04 -0700" // RFC822 with numeric zone
        RFC850      = "Monday, 02-Jan-06 15:04:05 MST"
        RFC1123     = "Mon, 02 Jan 2006 15:04:05 MST"
        RFC1123Z    = "Mon, 02 Jan 2006 15:04:05 -0700" // RFC1123 with numeric zone
        RFC3339     = "2006-01-02T15:04:05Z07:00"
        RFC3339Nano = "2006-01-02T15:04:05.999999999Z07:00"
        Kitchen     = "3:04PM"
        // Handy time stamps.
        Stamp      = "Jan _2 15:04:05"
        StampMilli = "Jan _2 15:04:05.000"
        StampMicro = "Jan _2 15:04:05.000000"
        StampNano  = "Jan _2 15:04:05.000000000"
)

يمكنك استخدامها على النحو التالي:

t := time.Now()
fmt.Println(t.Format(time.ANSIC))

المزيد من دروس Go: