الوقت والتاريخ عنصران أساسيان في الكثير من البرامج ، من أدوات إدارة الوقت إلى تطبيقات الويب. بصفتك مبرمجًا ، فأنت بحاجة إلى معرفة كيفية التعامل مع الوقت والتاريخ بأي لغة تستخدمها.

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

إذن ، ما الذي يعنيه التلاعب بالوقت والتاريخ ، وكيف يمكنك التلاعب بالوقت والتاريخ في Go؟

ما هو التلاعب بالوقت والتاريخ؟

وفقًا لمتطلبات برنامجك ، قد يحتاج إلى التحكم في سلوك أو تمثيل الأوقات والتواريخ أو إدارتها أو تعديلها.

لغات البرمجة المختلفة لها وظائفها الخاصة للتلاعب بالوقت والتاريخ. تتمتع لغة Go بقدرات واسعة ومفيدة لهذا الغرض.

يمكن أن يشمل التلاعب بالوقت والتاريخ ما يلي:

  • الحصول على الوقت الحالي للموقع أو المنطقة الزمنية.
  • إجراء العمليات الحسابية في الأوقات والتواريخ.
  • تغيير تنسيق الإدخال / الإخراج للأوقات والتواريخ.

لبدء معالجة الوقت والتاريخ في تطبيقات Go ، قم باستيراد ملف زمن الحزمة جنبًا إلى جنب مع الحزم الأخرى التي تستخدمها.

يستورد (
"FMT"
"زمن"
)

كيفية الحصول على الوقت والتاريخ الحاليين في Go

instagram viewer

من حالات الاستخدام الشائع للتلاعب بالوقت الحصول على التوقيت المحلي الحالي أو الوقت الحالي لمنطقة زمنية أو موقع معين.

للحصول على الوقت والتاريخ بالتوقيت المحلي أو منطقة زمنية أو موقع معين ، يمكنك استخدام ملف زمن. حاليا() و زمن. موقع التحميل () المهام:

func رئيسي(){
// احصل على الوقت والتاريخ الحالي بالتوقيت المحلي
myTime: = ime. حاليا()
FMT. Println ("الوقت الحالي في "، myTime. موقع()، " هو: "، myTime)

// طريقة أخرى للحصول على التوقيت المحلي
الموقع ، _: = الوقت. LoadLocation ("محلي") // أو الوقت. LoadLocation ("")
FMT. Println ("الوقت الحالي في "، موقعك، " هو: "، زمن. الآن (). في (الموقع))

// موقع آخر
الموقع ، _ = الوقت. LoadLocation ("أمريكا / نيويورك")
FMT. Println ("الوقت الحالي في "، موقعك، " هو: "، myTime. في (الموقع))

// الحصول على الوقت الحالي في المنطقة الزمنية الجبلية (MST)
الموقع ، _ = الوقت. LoadLocation ("MST")
FMT. Println ("الوقت الحالي في "، موقعك، " هو: "، myTime. في (الموقع))
}

تشغيل البرنامج أعلاه بامتداد اذهب تشغيل filename.go ينتج الإخراج التالي في الجهاز:

لا تدعم طريقة LoadLocation كل موقع أو اختصار لكل منطقة زمنية. بحسب ال اذهب الوثائق، فهو يدعم فقط المواقع الموجودة في قاعدة بيانات IANA.org.

كيفية الحصول على مكونات منفصلة من تاريخ معين

يمكنك الحصول على كل مكون من مكونات الطابع الزمني بشكل منفصل وهو ما يشبه متى العمل مع الوقت والتواريخ في JavaScript.

هناك العديد من الطرق لتحقيق ذلك باستخدام Go زمن المهام. يوضح هذا القسم كل طريقة.

يمكنك استخدام ال تاريخ() وظيفة للحصول على اليوم والشهر والسنة و ساعة حائط() وظيفة للحصول على الساعة والدقيقة والثواني. فمثلا:

funcرئيسي() {
myTime: = الوقت. حاليا()؛
سنة ، شهر ، يوم: = myTime. تاريخ()
FMT. Println ("السنة:" ، السنة)
FMT. Println ("الشهر:" ، الشهر)
FMT. Println ("اليوم:" ، اليوم)

ساعة ، دقيقة ، ثانية: = myTime. ساعة حائط()
FMT. Println ("الساعة:" ، الساعة)
FMT. Println ("دقيقة:" ، دقيقة)
FMT. Println ("ثواني:" ، ثانية)
}

يوضح الإخراج الأجزاء المختلفة للطابع الزمني:

يمكنك أيضًا الحصول على وحدات الطابع الزمني بشكل فردي باستخدام ملف زمن وظائف لكل منهم:

funcرئيسي() {
myTime: = الوقت. حاليا()

// احصل على كل وحدة من السنة إلى النانو ثانية
FMT. Println ("السنة:" ، myTime. سنة())
FMT. Println ("الشهر:" ، myTime. شهر())
FMT. Println ("Day:"، myTime. يوم())
FMT. Println ("الساعة:" ، myTime. ساعة())
FMT. Println ("Minute:"، myTime. اللحظة())
FMT. Println ("ثواني:" ، myTime. ثانيا())
FMT. Println ("نانو ثانية:" ، myTime. نانو ثانية ())
}

كما يوضح الإخراج ، يمنحك هذا أيضًا إمكانية الوصول إلى النانو ثانية:

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

يمكنك استخراج السنة والشهر واليوم والساعة والدقيقة والثانية من تاريخ معين. للقيام بذلك ، يجب عليك إما تهيئة كائن تاريخ جديد أو تحليل التاريخ من سلسلة:

funcرئيسي() {
// احصل على المكونات الفردية للوقت من السنة إلى النانو ثانية
// من تاريخ محدد
وقتك: = الوقت. تاريخ(2020, 07, 1, 06, 32, 10, 0، زمن. التوقيت العالمي)
FMT. Println ("السنة:" ، وقتك. سنة())
FMT. Println ("الشهر:" ، وقتك. شهر())
FMT. Println ("اليوم:" ، وقتك. يوم())
FMT. Println ("الساعة:" ، وقتك. ساعة())
FMT. Println ("Minute:"، yourTime. اللحظة())
FMT. Println ("ثواني:" ، وقتك. ثانيا())
FMT. Println ("نانو ثانية:" ، وقتك. نانو ثانية ())
// باستخدام وظيفة Clock () للحصول على الساعة والدقيقة والثانية
yourHour، yourMin، yourSec: = yourTime. ساعة حائط()
FMT. Println ("Hour:"، yourHour)
FMT. Println ("Minute:"، yourMin)
FMT. Println ("Seconds:"، yourSec)

// الحصول على الوقت والتاريخ من السلسلة
سلسلة التاريخ: = "2020-07-0106:32:10"
التخطيط: = "2006-01-0215:04:05" // تنسيق الإخراج المطلوب
yourTime ، _ = الوقت. تحليل (تخطيط ، سلسلة تاريخ)
FMT. Println ("وقتك هو:" ، وقتك)
FMT. Println ("السنة:" ، وقتك. سنة())
FMT. Println ("الشهر:" ، وقتك. شهر())
FMT. Println ("اليوم:" ، وقتك. يوم())
FMT. Println ("الساعة:" ، وقتك. ساعة())
FMT. Println ("Minute:"، yourTime. اللحظة())
FMT. Println ("ثواني:" ، وقتك. ثانيا())
}

ينتج هذا الرمز الناتج التالي:

لاحظ أن التحليل () يستخدم التوقيت العالمي بشكل افتراضي إذا لم تحدد منطقة زمنية في سلسلة التاريخ.

كيفية إجراء العمليات الحسابية مع التاريخ والوقت

العمليات الحسابية هي نوع آخر من المعالجة التي يمكنك إجراؤها في الوقت والتاريخ في Go. عمليات بسيطة مثل الجمع والطرح وفرق الوقت كلها ممكنة.

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

يوضح الكود التالي استخدام هذه الوظائف:

funcرئيسي() {
curTime: = الوقت. حاليا()
curTime = curTime. إضافة وقت. ساعة) // يضيف ساعة واحدة
FMT. Println ("الوقت الحالي هو:"، curTime)
غدا: = curTime. إضافة وقت. ساعة * 24)
FMT. Println ("هذا الوقت غدًا:" ، غدًا)
nextWeek: = curTime. إضافة وقت. ساعة * 24 * 7)
FMT. Println ("هذا الوقت من الأسبوع القادم هو:" ، nextWeek)

// باستخدام AddDate (ص ، م ، د)
nextTomorrow: = curTime. إضافة تاريخ(0, 0, 2)
FMT. Println ("هذه المرة غدًا التالي:" ، التالي غدًا)
nextMonth: = curTime. إضافة تاريخ(0, 1, 0)
FMT. Println ("هذا الوقت من الشهر القادم هو:" ، nextMonth)
fiveYearsAndOneMonthAfter: = curTime. إضافة تاريخ(5, 1, 0)
FMT. Println ("هذه المرة بعد خمس سنوات وشهر واحد هو:" ، وخمس سنوات و OneMonthAfter)
}

والتي ينتج عنها المخرجات التالية:

يمكنك أيضًا طرح الوقت مع يضيف() و إضافة تاريخ() عن طريق تمرير المعلمات السلبية. على سبيل المثال:

funcرئيسي() {
curTime: = الوقت. حاليا()

// طرح يوم واحد باستخدام AddDate ()
أمس: = curTime. إضافة تاريخ(0, 0, -1)
FMT. Println ("كانت هذه المرة أمس:" أمس)

// اطرح شهر واحد باستخدام Add ()
lastMonth: = curTime. إضافة وقت. ساعة * -24 * 30)
FMT. Println ("هذا الوقت من الشهر الماضي كان:" ، lastMonth)
}

ينتج هذا الإخراج:

على الرغم من أنه يمكنك استخدام ملفات يضيف() و إضافة تاريخ() للعثور على التمييز بين التواريخ ، يحتوي Go على الفرعية() الوظيفة التي تعمل بشكل مختلف قليلاً:

funcرئيسي() {
curTime = الوقت. حاليا()
الماضي: = الوقت. تاريخ(2022، زمن. ديسمبر، 25, 12, 0, 0, 0، زمن. التوقيت العالمي)
فرق: = الماضي. Sub (curTime)
FMT. Println ("الفرق بين الآن والماضي هو:" ، فرق)
// احصل على الفرق في الوحدات المختلفة
سنوات: = int(فرق. ساعات() / 24 / 365)
FMT. Println ("السنوات:" ، بالسنوات)
الشهور: = int(فرق. ساعات() / 24 / 30)
FMT. Println ("الشهور:" ، الأشهر)
الأيام: = int(فرق. ساعات() / 24)
FMT. Println ("أيام:" ، أيام)
ساعات: = int(فرق. ساعات())
FMT. Println ("الساعات:" ، الساعات)
// فرق. دقيقة () ، فرق. ثواني () ، فرق. ميلي ثانية () ، فرق. تُرجع Nanoseconds () أيضًا وحداتها
}

ينتج هذا الرمز الناتج التالي:

كيفية الحصول على الوقت والتاريخ بتنسيقات مختلفة

يمكنك أيضًا الحصول على مخرجات الوقت والتاريخ بتنسيقات متعددة باستخدام تنسيق شكل() وظيفة. فيما يلي بعض أنماط التنسيق الشائعة:

funcرئيسي() {
curTime = الوقت. حاليا()
// المدمج في أنماط التنسيق القياسية
FMT. Println ("الوقت الحالي هو:"، curTime)
FMT. Println ("الوقت الحالي بتنسيق RFC3339 هو:" ، curTime. تنسيق (الوقت. RFC3339))
FMT. Println ("الوقت الحالي بتنسيق RFC3339Nano هو:" ، curTime. تنسيق (الوقت. RFC3339Nano))
FMT. Println ("الوقت الحالي بتنسيق RFC1123 هو:" ، curTime. تنسيق (الوقت. RFC1123))
FMT. Println ("الوقت الحالي بتنسيق RFC1123Z هو:" ، curTime. تنسيق (الوقت. RFC1123Z))
FMT. Println ("الوقت الحالي بتنسيق RFC822 هو:" ، curTime. تنسيق (الوقت. RFC822))
FMT. Println ("الوقت الحالي بتنسيق RFC822Z هو:" ، curTime. تنسيق (الوقت. RFC822Z))
FMT. Println ("الوقت الحالي بتنسيق RFC850 هو:" ، curTime. تنسيق (الوقت. RFC850))
FMT. Println ("الوقت الحالي بتنسيق ANSIC هو:" ، curTime. تنسيق (الوقت. أنسيك))
FMT. Println ("الوقت الحالي بتنسيق Unix هو:" ، curTime. تنسيق (الوقت. تاريخ يونكس))
// أنماط التنسيق المخصصة
// DD-MM-YYYY HH: MM: SS
FMT. Println ("الوقت الحالي بالتنسيق المخصص هو:" ، curTime. شكل("02-01-200615:04:05"))
// MM-DD-YYYY HH: MM: SS
FMT. Println ("الوقت الحالي بالتنسيق المخصص هو:" ، curTime. شكل("01-02-200615:04:05"))
// YYYY-MM-DD HH: MM: SS
FMT. Println ("الوقت الحالي بالتنسيق المخصص هو:" ، curTime. شكل("2006-01-0215:04:05"))
// DD.MM.YYYY
FMT. Println ("الوقت الحالي بالتنسيق المخصص هو:" ، curTime. شكل("02.01.2006"))
// اليوم / الشهر / السنة
FMT. Println ("الوقت الحالي بالتنسيق المخصص هو:" ، curTime. شكل("02/01/2006"))
// 01 فبراير 2006
FMT. Println ("الوقت الحالي بالتنسيق المخصص هو:" ، curTime. شكل("02 يناير 2006"))
// 01 فبراير 2006 الاثنين
FMT. Println ("الوقت الحالي بالتنسيق المخصص هو:" ، curTime. شكل("02 شهر فبراير 2006 الاثنين"))
// 01 فبراير 2006 الإثنين 15:04:05
FMT. Println ("الوقت الحالي بالتنسيق المخصص هو:" ، curTime. شكل("02 شهر فبراير 2006 الإثنين 15:04:05"))
}

تنتج هذه الأنواع المختلفة من التنسيق المخرجات التالية:

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

قائمة التلاعبات التي يمكنك القيام بها في الأوقات والتواريخ لا تنتهي تقريبًا. اعتمادًا على نطاق التطبيق الخاص بك ، قد تحتاج إلى إجراء العديد من عمليات التاريخ / الوقت المتنوعة.

لأي حالة استخدام قد تكون لديك ، فإن زمن الحزمة وظيفية للغاية ولديها العديد من الأساليب المضمنة.

يمكنك استخدام معالجة التاريخ والوقت لإنشاء مخطط يومي بسيط أو تطبيق لجدولة المهام.