النوع Time في Go هو نوع يصف لحظة زمنية.
يمكن الوصول إلى معلومات التاريخ والوقت ومقارنتها والتلاعب بها عبر طرقه، لكن هناك أيضًا بعض الدوال التي تُستدعى على حزمة time نفسها.
يمكن الحصول على التاريخ والوقت الحاليين عبر دالة time.Now.
تُحلّل دالة time.Parse السلاسل النصية إلى قيم من النوع Time.
لدى Go أسلوب خاص لتحديد التخطيط الذي تتوقعه للتحليل.
عليك كتابة مثال للتخطيط باستخدام القيم من هذا الطابع الزمني الخاص:
Mon Jan 2 15:04:05 -0700 MST 2006.
على سبيل المثال:
import "time"
func parseTime() time.Time {
date := "Tue, 09/22/1995, 13:00"
layout := "Mon, 01/02/2006, 15:04"
t, err := time.Parse(layout,date) // time.Time, error
}
// => 1995-09-22 13:00:00 +0000 UTC
تُرجع طريقة Time.Format() تمثيلًا للوقت على هيئة سلسلة نصية.
وكما هو الحال مع دالة Parse، يُحدَّد التخطيط الهدف مرة أخرى عبر مثال يستخدم القيم من الطابع الزمني الخاص.
على سبيل المثال:
import (
"fmt"
"time"
)
func main() {
t := time.Date(1995,time.September,22,13,0,0,0,time.UTC)
formattedTime := t.Format("Mon, 01/02/2006, 15:04") // string
fmt.Println(formattedTime)
}
// => Fri, 09/22/1995, 13:00
لإنشاء تخطيط مخصص، استخدم مزيجًا من هذه الخيارات. في Go تتوفر أيضًا ثوابت التنسيق الجاهزة للتاريخ والطابع الزمني.
| الوقت | الخيارات |
|---|---|
| السنة | 2006 ; 06 |
| الشهر | Jan ; January ; 01 ; 1 |
| اليوم | 02 ; 2 ; _2 (لإظهار الصفر البادئ) |
| يوم الأسبوع | Mon ; Monday |
| الساعة | 15 ( تنسيق 24 ساعة ) ; 3 ; 03 (AM أو PM) |
| الدقيقة | 04 ; 4 |
| الثانية | 05 ; 5 |
| علامة AM/PM | PM |
| يوم من السنة | 002 ; __2 |
يمتلك النوع time.Time طرقًا متنوعة للوصول إلى وقت معين. على سبيل المثال: الساعة: Time.Hour()، والشهر: Time.Month().
يمكن العثور على مزيد من التفاصيل حول كيفية عمل ذلك في التوثيق الرسمي.
تتضمن time نوعًا آخر، هو Duration، يمثل الوقت المنقضي، إضافة إلى دعم المواقع/المناطق الزمنية والمؤقتات وغيرها من الوظائف المرتبطة التي ستُغطى في مفهوم آخر.
في هذا التمرين ستعمل على منظّم مواعيد لصالون تجميل افتُتح في 15 سبتمبر 2012.
لديك خمس مهام، وكلها ستتعلق بتواريخ المواعيد.
نفّذ الدالة Schedule لتحليل تمثيل نصي لتاريخ موعد إلى صيغة time.Time المقابلة:
Schedule("7/25/2019 13:45:00")
// => 2019-07-25 13:45:00 +0000 UTC
نفّذ الدالة HasPassed التي تأخذ تاريخ موعد وتتحقق مما إذا كان الموعد في الماضي:
HasPassed("July 25, 2019 13:45:00")
// => true
نفّذ الدالة IsAfternoonAppointment التي تأخذ تاريخ موعد وتتحقق مما إذا كان الموعد بعد الظهر (>= 12:00 و < 18:00):
IsAfternoonAppointment("Thursday, July 25, 2019 13:45:00")
// => true
نفّذ الدالة Description التي تأخذ تاريخ موعد وتُرجع وصفًا لذلك التاريخ والوقت:
Description("7/25/2019 13:45:00")
// => "You have an appointment on Thursday, July 25, 2019, at 13:45."
نفّذ الدالة AnniversaryDate التي تُرجع تاريخ الذكرى السنوية لافتتاح الصالون للسنة الحالية بالتوقيت العالمي UTC.
بافتراض أن السنة الحالية هي 2020:
AnniversaryDate()
// => 2020-09-15 00:00:00 +0000 UTC
ملاحظة: القيمة المُرجَعة هي time.Time ووقت اليوم لا يهم.
سجّل في Exercism لتتعلّم وتتقن Go عبر 34 مفهومًا165 تمرينًا، وإرشاد بشري حقيقي، وكل ذلك مجانًا.