العمل مع التواريخ والوقت في Go: دليل شامل

مدرب بايثون أونلاين للمبتدئين

تعلم Python بسهولة دون إرهاق نظري. حل مهام عملية مع التحقق التلقائي واكتب الكود مباشرة في المتصفح.

ابدأ الدورة

مقدمة في العمل مع التواريخ والوقت في Go

العمل مع التواريخ والوقت هي إحدى المهام الأساسية في أي لغة برمجة. توفر لغة Go (Golang) حزمة time قوية وبديهية تسمح بتنفيذ جميع العمليات الأساسية: الحصول على الوقت الحالي، تحليل السلاسل النصية، التنسيق، حساب الفروق، إنشاء المؤقتات، وغير ذلك الكثير. على عكس بعض اللغات الأخرى، تستخدم Go تنسيقًا زمنيًا مرجعيًا فريدًا، مما يجعل الكود أكثر قابلية للقراءة والتوقع. في هذه المقالة، سنشرح بالتفصيل الإمكانيات الرئيسية لحزمة time مع أمثلة عملية.



الأنواع الأساسية والحصول على الوقت الحالي

النوع time.Time

النوع المركزي في حزمة time هو الهيكل time.Time. يخزن هذا الهيكل معلومات عن الثواني، النانوثواني، المنطقة الزمنية، والعداد الرتيب (لإجراء قياسات دقيقة).



الحصول على اللحظة الحالية

للحصول على الوقت الحالي، تُستخدم الدالة time.Now(). تقوم هذه الدالة بإرجاع الوقت المحلي بناءً على إعدادات النظام.

package main

import ( "fmt" "time")

func main() { now := time.Now() fmt.Println("الوقت الحالي:", now) fmt.Println("السنة:", now.Year()) fmt.Println("الشهر:", now.Month()) fmt.Println("اليوم:", now.Day()) fmt.Println("الساعات:", now.Hour()) fmt.Println("الدقائق:", now.Minute()) fmt.Println("الثواني:", now.Second()) fmt.Println("النانوثواني:", now.Nanosecond()) fmt.Println("يوم الأسبوع:", now.Weekday())}


إنشاء وقت يدويًا

يمكنك إنشاء لحظة زمنية محددة باستخدام الدالة time.Date(). تستقبل هذه الدالة السنة، الشهر، اليوم، الساعة، الدقيقة، الثانية، النانوثانية، والمنطقة الزمنية.

package main

import ( "fmt" "time")

func main() { // 15 مارس 2025، الساعة 14:30:00، UTC specificDate := time.Date(2025, time.March, 15, 14, 30, 0, 0, time.UTC) fmt.Println("التاريخ المُنشأ:", specificDate)}


تحليل وتنسيق التواريخ

التنسيق المرجعي في Go

تستخدم Go نهجًا فريدًا في التنسيق: بدلاً من الرموز مثل YYYY-MM-DD، يتم استخدام تاريخ مرجعي Mon Jan 2 15:04:05 MST 2006 (أو بشكل مختصر 2006-01-02T15:04:05Z07:00). هذا يعني أنه لتحديد السنة تكتب 2006، وللشهر 01، ولليوم 02، وللساعة 15 (أو 03 للصيغة ذات 12 ساعة)، وللدقيقة 04، وللثانية 05.



تنسيق الوقت إلى سلسلة نصية

تقوم الطريقة Format() بتحويل time.Time إلى سلسلة نصية وفقًا للنمط المحدد.

package main

import ( "fmt" "time")

func main() { now := time.Now() fmt.Println("صيغة قياسية:", now.Format("2006-01-02 15:04:05")) fmt.Println("صيغة عربية:", now.Format("02.01.2006 15:04")) fmt.Println("التاريخ فقط:", now.Format("02 Jan 2006")) fmt.Println("صيغة 12 ساعة:", now.Format("03:04:05 PM"))}


تحليل سلسلة نصية إلى تاريخ

تقوم الدالة time.Parse() بتحويل سلسلة نصية إلى time.Time. من المهم أن تتطابق السلسلة مع النمط.

package main

import ( "fmt" "time")

func main() { dateStr := "2025-03-15 14:30:00" layout := "2006-01-02 15:04:05" parsedTime, err := time.Parse(layout, dateStr) if err != nil { fmt.Println("خطأ في التحليل:", err) return } fmt.Println("الوقت المُحلل:", parsedTime) fmt.Println("يوم الأسبوع:", parsedTime.Weekday())}


التحليل مع المنطقة الزمنية

بالنسبة للسلاسل النصية التي تحتوي على منطقة زمنية، استخدم time.ParseInLocation() أو حدد الإزاحة في النمط (Z07:00).

package main

import ( "fmt" "tim

المدونات

توصيات الكتب