Go-তে একটি Time হলো সময়ের একটি মুহূর্ত বর্ণনা করে এমন একটি টাইপ। তারিখ ও সময়ের তথ্য এর মেথডগুলোর মাধ্যমে অ্যাক্সেস করা, তুলনা করা এবং পরিবর্তন করা যায়, তবে 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 ( ২৪-ঘণ্টার ফরম্যাট ) ; 3 ; 03 (AM বা PM) |
| মিনিট | 04 ; 4 |
| সেকেন্ড | 05 ; 5 |
| AM/PM চিহ্ন | PM |
| বছরের দিন | 002 ; __2 |
time.Time টাইপে নির্দিষ্ট কোনো সময় অ্যাক্সেস করার জন্য নানা রকম মেথড আছে। যেমন Hour: Time.Hour(), Month: Time.Month()। এটি কীভাবে কাজ করে সে সম্পর্কে আরও জানতে অফিসিয়াল ডকুমেন্টেশন দেখুন।
time প্যাকেজে আরেকটি টাইপও আছে, Duration, যা অতিবাহিত সময় বোঝায়; এর সঙ্গে আছে লোকেশন/টাইম জোন, টাইমার এবং আরও সম্পর্কিত কিছু ফিচারের সাপোর্ট, যা অন্য একটি কনসেপ্টে আলোচনা করা হবে।
এই অনুশীলনীতে আপনি একটি বিউটি সেলুনের জন্য অ্যাপয়েন্টমেন্ট শিডিউলার নিয়ে কাজ করবেন, যেটি ২০১২ সালের ১৫ সেপ্টেম্বর চালু হয়েছিল।
আপনার পাঁচটি কাজ আছে, যার প্রত্যেকটিতেই অ্যাপয়েন্টমেন্টের তারিখ জড়িত থাকবে।
একটি অ্যাপয়েন্টমেন্টের তারিখের লিখিত রূপকে সংশ্লিষ্ট time.Time ফরম্যাটে পার্স করতে Schedule ফাংশনটি ইমপ্লিমেন্ট করুন:
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-তে চলতি বছরের জন্য সেলুনটি চালু হওয়ার বার্ষিকী তারিখ রিটার্ন করে।
ধরে নিন চলতি বছর ২০২০:
AnniversaryDate()
// => 2020-09-15 00:00:00 +0000 UTC
নোট: রিটার্ন ভ্যালুটি একটি time.Time এবং দিনের সময় গুরুত্বপূর্ণ নয়।
Exercism-এ সাইন আপ করুন, Go ট্র্যাকের 34টি কনসেপ্ট165টি অনুশীলনী আর সত্যিকারের মানুষের মেন্টরিং দিয়ে শিখুন ও দক্ষ হয়ে উঠুন, সম্পূর্ণ বিনামূল্যে।