Menu
Coddy logo textTech
flag Ar iconالعربيةdown icon

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

جزء من قسم Logic & Flow في رحلة GO على Coddy — الدرس 58 من 68.

عند العمل مع التواريخ والأوقات في برامج Go الخاصة بك، ستحتاج إلى استخدام حزمة time المدمجة في Go. توفر هذه الحزمة جميع الوظائف التي تحتاجها للعمل مع العمليات المتعلقة بالوقت.

نقطة البداية الأكثر شيوعاً هي الحصول على الوقت الحالي. تجعل لغة Go هذا الأمر بسيطاً باستخدام الدالة time.Now():

package main

import (
    "fmt"
    "time"
)

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

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

يحتوي كائن time.Time هذا على جميع المعلومات حول تلك اللحظة المحددة - السنة، والشهر، واليوم، والساعة، والدقيقة، والثانية، وحتى النانو ثانية. ستستخدم هذا كأصل لجميع عمليات الوقت الأخرى في Go.

quiz iconاختبر نفسك

يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.

quiz iconاختبر نفسك

يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.

quiz iconاختبر نفسك

يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.

challenge icon

التحدي

سهل

قم بإنشاء تطبيق لتتبع الوقت يلتقط الوقت الحالي ويعرضه بتنسيقات متعددة. سيختبر هذا التحدي قدرتك على استخدام دالة time.Now() والعمل مع كائنات time.Time لاستخراج مكونات مختلفة من اللحظة الحالية.

ستتلقى مدخلاً واحداً:

  • سلسلة نصية تحتوي على طلبات تنسيق العرض مفصولة بفاصلة بتنسيق "format1,format2,format3" (على سبيل المثال، "full,date,time,year,month,day")

مهمتك هي:

  1. استخدام time.Now() لالتقاط الوقت الحالي وتخزينه في متغير
  2. عرض رأس التطبيق: "=== TIME TRACKER APPLICATION ==="
  3. عرض تأكيد التقاط الطابع الزمني: "Current time captured successfully"
  4. تحليل المدخلات عن طريق تقسيمها عند الفواصل للحصول على طلبات التنسيق الفردية
  5. عرض رأس التنسيقات: "Displaying time in requested formats:"
  6. لكل طلب تنسيق، قم بعرض معلومات الوقت وفقاً للتنسيق المحدد:
    • لـ "full": عرض "Full timestamp: [complete_time_object]"
    • لـ "date": عرض "Date only: [year]-[month]-[day]" (استخدم مكونات تابع Date())
    • لـ "time": عرض "Time only: [hour]:[minute]:[second]" (استخدم توابع Hour()، Minute()، Second())
    • لـ "year": عرض "Year: [year_value]" (استخدم تابع Year())
    • لـ "month": عرض "Month: [month_name]" (استخدم تابع Month())
    • لـ "day": عرض "Day: [day_value]" (استخدم تابع Day())
    • لـ "weekday": عرض "Weekday: [weekday_name]" (استخدم تابع Weekday())
    • لـ "unix": عرض "Unix timestamp: [unix_seconds]" (استخدم تابع Unix())
  7. حساب وعرض الإحصائيات:
    • "=== TIME INFORMATION SUMMARY ==="
    • "Total formats displayed: [number_of_formats]"
    • "Timestamp components extracted: [number_of_unique_components]"
  8. عرض تفاصيل إضافية عن الوقت:
    • "Additional time details:"
    • "- Nanoseconds: [nanosecond_value]" (استخدم تابع Nanosecond())
    • "- Location: [timezone_location]" (استخدم تابع Location())
    • "- Is zero time: [true_or_false]" (استخدم تابع IsZero())
  9. عرض رسالة الإكمال: "Time tracking completed - all requested formats processed"

استخدم حزمة time للعمل مع كائنات الوقت، وحزمة strings لتقسيم السلسلة النصية المدخلة، وحزمة fmt للإخراج المنسق. تذكر أن time.Now() تعيد كائن time.Time يحتوي على جميع المعلومات حول اللحظة الحالية، ويمكنك استخراج مكونات محددة باستخدام التوابع المختلفة المتاحة في هذا الكائن. يوضح هذا التحدي كيفية التقاط الوقت الحالي واستخراج قطع مختلفة من المعلومات من كائن time.Time واحد.

ورقة مرجعية

للعمل مع التواريخ والأوقات في Go، قم باستيراد حزمة time:

import "time"

احصل على الوقت الحالي باستخدام time.Now():

now := time.Now()
fmt.Println(now)

تُرجع الدالة time.Now() كائنًا من نوع time.Time يمثل اللحظة الحالية، بما في ذلك السنة والشهر واليوم والساعة والدقيقة والثانية والنانو ثانية ومعلومات المنطقة الزمنية.

استخرج مكونات محددة من كائن time.Time باستخدام الطرق (methods):

now := time.Now()
year := now.Year()
month := now.Month()
day := now.Day()
hour := now.Hour()
minute := now.Minute()
second := now.Second()
nanosecond := now.Nanosecond()
weekday := now.Weekday()
unix := now.Unix()
location := now.Location()
isZero := now.IsZero()

جرّب بنفسك

package main

import (
	"fmt"
	"strings"
	"time"
)

func main() {
	// قراءة المدخلات
	var formatRequests string
	fmt.Scanln(&formatRequests)
	
	// استخدام وقت ثابت للحصول على مخرجات متسقة (وقت مرجع Go)
	// بدلاً من time.Now()، استخدم time.Date للحصول على نتائج متوقعة
	currentTime := time.Date(2006, 1, 2, 15, 4, 5, 0, time.UTC)
	
	// تقسيم طلبات التنسيق
	formats := strings.Split(formatRequests, ",")
	
	// TODO: اكتب الكود الخاص بك أدناه
	// عرض ترويسة التطبيق
	// عرض تأكيد التقاط الطابع الزمني
	// عرض ترويسة التنسيقات
	// معالجة كل طلب تنسيق وعرضه وفقاً لذلك
	// استخدام خريطة (map) لتتبع المكونات الفريدة للعد
	// استخدام التنسيق المناسب (على سبيل المثال، %02d للأرقام المبطنة بالأصفار)
	// عرض إحصائيات الملخص
	// عرض تفاصيل الوقت الإضافية
	// عرض رسالة الإكمال
	
}
quiz iconاختبر نفسك

يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.

جميع دروس Logic & Flow