0Pricing
Go Academy · درس

الوقت والمدة

مثّل اللحظات والفواصل الزمنية

الوقت والمدة درس مجاني في Go Academy على CoddyKit. هذا هو الدرس 1 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في Go Academy، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة Go Academy 4 دروس في المجموع.

حزمة time

تمثل حزمة time في Go لحظات زمنية والفترات الفاصلة بينها.

  • يمثل time.Time لحظة زمنية محددة.
  • تمثل time.Duration مدة زمنية.
package main

import (
    "fmt"
    "time"
)

func main() {
    var d time.Duration = 2 * time.Second
    fmt.Println(d)
}

الحصول على الوقت الحالي

تعيد time.Now() اللحظة الحالية كقيمة من النوع time.Time. (وتعتمد قيمتها الدقيقة على وقت تشغيل البرنامج.)

package main

import (
    "fmt"
    "time"
)

func main() {
    now := time.Now()
    fmt.Println(now.Year())
}

إنشاء وقت محدد

تنشئ time.Date لحظة دقيقة من أجزائها: السنة والشهر واليوم والساعة والدقيقة والثانية والنانوثانية والموقع.

package main

import (
    "fmt"
    "time"
)

func main() {
    t := time.Date(2026, time.May, 30, 9, 0, 0, 0, time.UTC)
    fmt.Println(t)
}

قراءة مكونات الوقت

توفّر قيمة time.Time دوال مثل Year وMonth وDay وHour وWeekday.

package main

import (
    "fmt"
    "time"
)

func main() {
    t := time.Date(2026, time.May, 30, 0, 0, 0, 0, time.UTC)
    fmt.Println(t.Month(), t.Day(), t.Weekday())
}

ثوابت المدة

أنشئ المدد بضرب ثوابت الوحدات: time.Hour وtime.Minute وtime.Second وtime.Millisecond.

package main

import (
    "fmt"
    "time"
)

func main() {
    d := 1*time.Hour + 30*time.Minute
    fmt.Println(d)
}

تحويل المدد

تعيد دوال مثل Seconds() وMinutes() وHours() المدة كقيمة float64 بتلك الوحدة.

package main

import (
    "fmt"
    "time"
)

func main() {
    d := 90 * time.Minute
    fmt.Println(d.Hours())
    fmt.Println(d.Seconds())
}

إضافة وقت

تعيد t.Add(d) وقتًا جديدًا مزاحًا بمقدار مدة. ولا تتغير القيمة الأصلية لأن time.Time نوع قيمة.

package main

import (
    "fmt"
    "time"
)

func main() {
    t := time.Date(2026, time.May, 30, 9, 0, 0, 0, time.UTC)
    later := t.Add(2 * time.Hour)
    fmt.Println(later.Hour())
}

إضافة وحدات تقويمية

تُزيح t.AddDate(years, months, days) الوقت بمقادير تقويمية، مع التعامل بشكل صحيح مع أطوال الأشهر والسنوات الكبيسة.

package main

import (
    "fmt"
    "time"
)

func main() {
    t := time.Date(2026, time.January, 31, 0, 0, 0, 0, time.UTC)
    next := t.AddDate(0, 1, 0)
    fmt.Println(next.Month(), next.Day())
}

الفرق بين وقتين

تعيد t2.Sub(t1) قيمة Duration التي تمثل الفترة الزمنية بين وقتين. وتشير النتيجة السالبة إلى أن t2 أسبق.

package main

import (
    "fmt"
    "time"
)

func main() {
    a := time.Date(2026, time.May, 30, 9, 0, 0, 0, time.UTC)
    b := time.Date(2026, time.May, 30, 12, 0, 0, 0, time.UTC)
    fmt.Println(b.Sub(a))
}

مقارنة الأوقات

استخدم Before وAfter وEqual لمقارنة اللحظات الزمنية. تجنّب استخدام == لأنه يقارن أيضًا المنطقة الزمنية الداخلية.

package main

import (
    "fmt"
    "time"
)

func main() {
    a := time.Date(2026, 5, 30, 9, 0, 0, 0, time.UTC)
    b := time.Date(2026, 5, 30, 10, 0, 0, 0, time.UTC)
    fmt.Println(a.Before(b))
}

الطوابع الزمنية لنظام Unix

تعيد t.Unix() عدد الثواني منذ 1 يناير 1970. وتحول time.Unix(sec, 0) هذه القيمة مجددًا إلى time.Time.

package main

import (
    "fmt"
    "time"
)

func main() {
    t := time.Date(2026, 5, 30, 0, 0, 0, 0, time.UTC)
    secs := t.Unix()
    fmt.Println(time.Unix(secs, 0).UTC().Year())
}

تحقق سريع

ماذا تعيد t2.Sub(t1)؟

مراجعة: الوقت والمدة

لقد تعلمت النموذج الأساسي للوقت:

  • تمثل time.Time لحظة زمنية، بينما تمثل time.Duration فترة زمنية.
  • أنشئ القيم باستخدام Now وDate، وغيّرها باستخدام Add وAddDate.
  • قِس الفترات باستخدام Sub، وقارن باستخدام Before/After.
package main

import (
    "fmt"
    "time"
)

func main() {
    start := time.Date(2026, 5, 30, 8, 0, 0, 0, time.UTC)
    end := start.Add(45 * time.Minute)
    fmt.Println(end.Sub(start).Minutes(), "minutes")
}

الأسئلة الشائعة

هل درس «الوقت والمدة» مجاني؟

نعم — نص درس «الوقت والمدة» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة Go Academy، انتقل إلى CoddyKit PRO. تتضمن دورة Go Academy 4 دروس في المجموع.

ماذا ستتعلم في «الوقت والمدة»؟

مثّل اللحظات والفواصل الزمنية تتمرن على Go Academy مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.

هل أحتاج إلى خبرة سابقة لأبدأ Go Academy؟

لا تُشترط خبرة سابقة. Go Academy على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 1 من أصل 4.

كم من الوقت يستغرق درس «الوقت والمدة»؟

معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.

هل يمكنني كتابة وتشغيل أكواد في درس Go Academy هذا؟

نعم. كل درس في Go Academy يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.

جميع الدروس في هذه الدورة

  1. الوقت والمدة
  2. التنسيق والتحليل
  3. المؤقتات وTickers
  4. المناطق الزمنية
← العودة إلى Go Academy