المسارات
/
Go
Go
/
التمارين
/
الحجز في صالون التجميل
الحجز في صالون التجميل

الحجز في صالون التجميل

تمرين تعلّمي

مقدمة

النوع 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.

لديك خمس مهام، وكلها ستتعلق بتواريخ المواعيد.

1. تحليل تاريخ الموعد

نفّذ الدالة Schedule لتحليل تمثيل نصي لتاريخ موعد إلى صيغة time.Time المقابلة:

Schedule("7/25/2019 13:45:00")
// => 2019-07-25 13:45:00 +0000 UTC

2. التحقق مما إذا كان الموعد قد مضى

نفّذ الدالة HasPassed التي تأخذ تاريخ موعد وتتحقق مما إذا كان الموعد في الماضي:

HasPassed("July 25, 2019 13:45:00")
// => true

3. التحقق مما إذا كان الموعد بعد الظهر

نفّذ الدالة IsAfternoonAppointment التي تأخذ تاريخ موعد وتتحقق مما إذا كان الموعد بعد الظهر (>= 12:00 و < 18:00):

IsAfternoonAppointment("Thursday, July 25, 2019 13:45:00")
// => true

4. وصف وقت الموعد وتاريخه

نفّذ الدالة Description التي تأخذ تاريخ موعد وتُرجع وصفًا لذلك التاريخ والوقت:

Description("7/25/2019 13:45:00")
// => "You have an appointment on Thursday, July 25, 2019, at 13:45."

5. إرجاع تاريخ الذكرى السنوية لافتتاح الصالون

نفّذ الدالة AnniversaryDate التي تُرجع تاريخ الذكرى السنوية لافتتاح الصالون للسنة الحالية بالتوقيت العالمي UTC.

بافتراض أن السنة الحالية هي 2020:

AnniversaryDate()

// => 2020-09-15 00:00:00 +0000 UTC

ملاحظة: القيمة المُرجَعة هي time.Time ووقت اليوم لا يهم.

تعديل عبر GitHub يفتح الرابط في نافذة أو علامة تبويب جديدة
Go Exercism

مستعد لبدء الحجز في صالون التجميل؟

سجّل في Exercism لتتعلّم وتتقن Go عبر 34 مفهومًا165 تمرينًا، وإرشاد بشري حقيقي، وكل ذلك مجانًا.