العمل مع التواريخ في Go (Golang): نظرة عامة على المكتبات والحزم

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

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

ابدأ الدورة

العمل مع التواريخ في Go (Golang): مراجعة شاملة للمكتبات



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



1. الحزمة القياسية time



حزمة time هي أساس العمل مع التواريخ والوقت في Go. تتضمن أنواع Time و Duration و Location ووظائف للتنسيق والتحليل والحسابات.



الإمكانيات الأساسية:

  • الوقت الحالي: time.Now()
  • التنسيق: طريقة .Format(layout string) - تستخدم تنسيقًا مرجعيًا خاصًا Mon Jan 2 15:04:05 MST 2006 (Go وُلد في عام 2006).
  • التحليل: دالة time.Parse(layout, value string).
  • الحسابات: طرق .Add(d Duration) و .Sub(t Time) و .AddDate(y, m, d int).
  • المناطق الزمنية: time.LoadLocation(name string) وطريقة .In(loc *Location).


package main

import ( "fmt" "time")

func main() { // الوقت الحالي now := time.Now() fmt.Println("الآن:", now)

// التنسيق fmt.Println("تنسيق RFC3339:", now.Format(time.RFC3339)) fmt.Println("تنسيق مخصص:", now.Format("02.01.2006 15:04:05"))

// تحليل سلسلة نصية parsed, _ := time.Parse("2006-01-02", "2024-03-15") fmt.Println("تم التحليل:", parsed)

// العمل مع المناطق الزمنية loc, _ := time.LoadLocation("Europe/Moscow") moscowTime := now.In(loc) fmt.Println("الوقت في موسكو:", moscowTime)

// الحسابات tomorrow := now.AddDate(0, 0, 1) fmt.Println("غدًا:", tomorrow.Format("02.01.2006"))}


خاصية: يستخدم Go تنسيقًا مرجعيًا فريدًا (2006-01-02T15:04:05Z07:00)، بدلاً من YYYY-MM-DD المألوف. يتطلب هذا التعود عليه، لكنه يزيل الغموض.



2. مكتبة carbon (نظير Carbon للغة PHP)



مكتبة carbon هي نسخة من مكتبة PHP الشهيرة Carbon. توفر واجهة fluent سهلة الاستخدام للعمل مع التواريخ.



التثبيت:

go get github.com/golang-module/carbon/v2


أمثلة على الاستخدام:

package main

import ( "fmt" "github.com/golang-module/carbon/v2")

func main() { // التاريخ الحالي now := carbon.Now() fmt.Println("الآن:", now.ToDateTimeString())

// إنشاء تاريخ date := carbon.CreateFromDate(2024, 3, 15) fmt.Println("التاريخ:", date.ToDateString())

// الفرق بين التواريخ start := carbon.Parse("2024-01-01") end := carbon.Parse("2024-03-15") diff := start.DiffInDays(end) fmt.Printf("الأيام بينهما: %d", diff)

// تنسيقات مقروءة للإنسان fmt.Println("أمس:", carbon.Yesterday().ToDateString()) fmt.Println("غدًا:", carbon.Tomorrow().ToDateString())

// التحقق fmt.Println("هل اليوم عطلة نهاية الأسبوع؟", now.IsWeekend()) fmt.Println("هل الآن صباح؟", now.IsMorning())}


المزايا: API بسيط، دعم الأحرف الصينية، التوطين، طرق للعمل مع بداية/نهاية اليوم، الأسبوع، الشهر.



3. مكتبة now (أداة بسيطة)



مكتبة now من مؤلف GORM هي أداة خفيفة لحساب بداية ونهاية الفترات الزمنية.



التثبيت:

توصيات