1: কার্বন দিয়ে শুরুটা পেতে
1.1 পরিচিতি
একটি সহজ, থিম্যাটিক এবং ডেভেলপার-বন্ধুত্বপূর্ণ গোল্যাং প্যাকেজ হল Carbon যা ডেট-টাইম হ্যান্ডল করার জন্য।
Carbon ব্যবহারের সুবিধা:
- ডেভেলপার-বন্ধুত্বপূর্ণ: Carbon একটি শিথিল এবং অভ্যন্য ইন্টারফেস অফার করে যা ডেভেলপারদের জন্য বোঝা বা চেঁচানো হয়।
- আন্তর্জাতিকীকরণ সাপোর্ট: তারিখ প্রতিনিধি স্থানীয়ীকরণ সাপোর্ট করে, যাতে তুমি তোমার তারিখ প্রতিনিধি মান নগদ করতে পারো।
- অপরিবর্তিতা: কারবনের অর্থনিত নমোনার আইনক সুরক্ষিত থাকায়, অরূপ সন্দেহজনক পরিবর্তনের বিবেচনা ছাড়াই গুরুত্বপূর্ণ তারিখ প্রতিনিধিকে সুরক্ষিতভাবে পাস করা যায়।
- সময় অঞ্চল হ্যান্ডলিং: কার্বন অব্যাহতি দিয়ে বিভিন্ন সময় অঞ্চলে তারিখ নিয়ন্ত্রণের জটিলতা প্রস্তুতি করে।
- বিস্তারিত এপিআই: তৈরি, পার্শ এবং তারিখ এবং সময় প্রতিনিধিতার জন্য একটি ব্যাপক সেট প্রদান করা হয়।
1.2 ইনস্টলেশন গাইড
Go সংষ্করণ >= 1.16 এর জন্য ইনস্টলেশন
Go সংষ্করণ 1.16 বা তার উপরে Carbon প্যাকেজের জন্য, নিম্নোক্ত কমান্ডটি ব্যবহার করো:
go get -u github.com/golang-module/carbon/v2
তারপর, প্যাকেজটি তোমার Go ফাইলে আমদানি করো:
import "github.com/golang-module/carbon/v2"
Go সংষ্করণ < 1.16 এর জন্য ইনস্টলেশন
পুরাতন সংষ্করণ এর জন্য, তুমি এখনোও Carbon ইনস্টল করতে পারো:
go get -u github.com/golang-module/carbon
এবং তারপরে তা বিশেষত আমদানি করো:
import "github.com/golang-module/carbon"
লক্ষ্য করো যে v1 এখনো সক্রিয়ভাবে আপডেট হয় না, তাই তা বাগ সংশোধনের জন্য মেন্টেন করা হবে।
1.3 তোমার প্রথম কার্বন প্রজেক্ট সেট অপ করা
কার্বনের মৌলিক কনফিগারেশন: একবার কার্বন ইনস্টল হলে, তুমি সহজেই একটি নতুন কার্বন প্রতিষ্ঠান তৈরি করে শুরু করতে পারো। তুমি তোমার প্রজেক্টের প্রয়োজনে মিলিমিটার্যাক্ট গ্লোবাল লেআউট, সময় অঞ্চল এবং লোকয় কারবনের স্থাপনা করে ব্যক্তিগত করতে পারো।
গ্লোবাল ডিফল্ট লেয়আউট, সময় অঞ্চল এবং লোকয় সজীব করা:
carbon.SetDefault(carbon.Default{
Layout: carbon.RFC3339Layout,
Timezone: carbon.PRC,
Locale: "en",
})
উল্লিখিত না হলে, কার্বনের ডিফল্ট সেটিং গুলি এইগুলিঃ Layout: "2006-01-02 15:04:05"
, Timezone: Local
, Locale: "en"
।
2: বেসিক কার্বন অপারেশন
2.1 বর্তমান সময় সাথে কাজ করা
বর্তমান দিন এবং সময় ফেচ করা
অনেক অ্যাপ্লিকেশন মধ্যে বর্তমান তারিখ ও সময় পেতে প্রধান অপারেশন। কার্বন দিয়ে, তুমি carbon.Now()
মেথড কল করে বর্তমান ডেট-টাইম ইনস্ট্যান্স প্রাপ্ত করতে পারো। দেখা যাক, কীভাবে বর্তমান ডেট-টাইম ফেচ করা যায়:
// বর্তমান ডেট এবং সময় যেতে আমি দৃঢ় হয়েছি।
now := carbon.Now()
fmt.Println("বর্তমান ডেট-টাইম:", now)
আজ, গতকাল এবং আগামী দিনের প্রদর্শন
কার্বন ডিয়ে বিশেষ দেখার উপরিত্যক্তর ওয়ে সাপোর্ট ফাকে করা হয়। আজ, গতকাল এবং আগামী তারিখের ডেট-টাইম প্রতিনিধিতা পেতে, তুমি carbon.Now()
, carbon.Yesterday()
, এবং carbon.Tomorrow()
মেথড ব্যবহার করতে পারো:
// আজকের ডেট-টাইম
today := carbon.Now()
fmt.Println("আজ:", today.ToDateTimeString())
// গতকালের ডেট-টাইম
yesterday := carbon.Yesterday()
fmt.Println("গতকাল:", yesterday.ToDateTimeString())
// আগামী দিনের ডেট-টাইম
tomorrow := carbon.Tomorrow()
fmt.Println("আগামী:", tomorrow.ToDateTimeString())
এরা এই প্রয়োজনীয় তারিখের প্রতিনিধিতা যা ম্যানুয়াল গণনার বিনামূল্যে এই ব্যবহারের একটি সাংক্ষেপ প্রদান করে।
বর্তমান সময়ের ফরম্যাটিং এবং প্রতিষ্ঠা
কার্বন কোনও বিভিন্ন উপায়ে ফরম্যাট এবং ডিসপ্লে করা হয়। চাই তুমি ঐএসও৯৪ স্ট্যান্ডার্ড ফরম্যাট, একটি কাস্টম ফরম্যাট অথবা একটি স্থানীয়ীকৃত সংস্করণে মর্জিত করে বা না, কার্বনে সেই প্রয়োজনীয় মেথড আছে।
এই হল কীভাবে তুমি বর্তমান ডেট-টাইমকে বিভিন্ন উপায়ে ফরম্যাট করতে পারো:
// স্ট্যান্ডার্ড ডেট-টাইম প্রতিনিধিতা
fmt.Println("আরএফসি৩৩৩৯:", now.ToRFC3339String())
fmt.Println("আইএসও৮৬০১:", now.ToIso8601String())
// কাস্টম ডেট-টাইম ফরম্যাট
fmt.Println("কাস্টম:", now.Format("Monday, 02-Jan-06 15:04:05 MST"))
// পূর্বনির্ধারিত লেআউটগুলিঃ
fmt.Println("এনসিক ফরম্যাট:", now.ToAnsicString())
fmt.Println("ইউনিক্স ডেট ফরম্যাট:", now.ToUnixDateString())
fmt.Println("রুবি ডেট ফরম্যাট:", now.ToRubyDateString())
fmt.Println("কিচেন ফরম্যাট:", now.ToKitchenString())
// কাস্টম প্যাটার্নের জন্য, ফরম্যাট মেথডটি ব্যবহার করো
fmt.Println("কাস্টম প্যাটার্ন:", now.Format("2006-01-02 3:04 PM"))
টাইমস্ট্যাম্প হতে ইনস্ট্যান্স তৈরি
Go-তে, টাইমস্ট্যাম্প সম্পর্কে কাজ করা সাধারণ, এবং Carbon তাদের সাথে করা জন্য সুবিধাজনক পদক্ষেপ সরবরাহ করে। একটি টাইমস্ট্যাম্প হল একটি বিশেষ ঘটনার সাথে ঘটনার সময় সনাক্ত করতে প্রয়োজন, সাধারণভাবে তারিখ এবং দিনাংক দিয়ে, কিছুসময় দ্রুতির সাথে নির্দিষ্ট হতে পারে।
Unix টাইমস্ট্যাম্প থেকে একটি Carbon ইন্সট্যান্স তৈরি করতে, যা ইউনিক্স ইপকপ (UTC উষার মধ্যরাতে, ১৯৭০ সালের ০১ জানুয়ারী) সময়ানুসারে অতিক্রমিত সেকেন্ডের সংখ্যা প্রতিনিয়ে প্রদান করে, আপনি বিভিন্ন নির্ভরণি স্তরগুলি ব্যবহার করতে পারেন:
// মেয়াদ উত্তরাধিকার সাথে একটি টাইমস্ট্যাম্প থেকে একটি কার্বন ইন্সট্যান্স তৈরি করুন
c1 := carbon.CreateFromTimestamp(1596604455)
fmt.Println(c1.ToString()) // আউটপুট: "202-08-05 13:14:15 +080 CST"
// এউচ্ছু নির্ভরণি (মিলিসেকেন্ড) এর জন্য, `CreateFromTimestampMilli` ব্যবহার করুন
c2 := carbon.CreateFromTimestampMilli(1596604455999)
fmt.Println(c2.ToString()) // আউটপুট: "202-08-05 13:14:15.999 +080 CST"
// মাইক্রোসেকেন্ডের ক্ষেত্রে, `CreateFromTimestampMicro` ব্যবহার করুন
c3 := carbon.CreateFromTimestampMicro(1596604455999999)
fmt.Println(c3.ToString()) // আউটপুট: "202-08-05 13:14:15.999999 +080 CST"
// এবং ন্যানোসেকেন্ডের জন্য, `CreateFromTimestampNano` ব্যবহার করুন
c4 := carbon.CreateFromTimestampNano(1596604455999999999)
fmt.Println(c4.ToString()) // আউটপুট: "202-08-05 13:14:15.999999999 +080 CST"
তারিখ এবং সময় অংশ থেকে ইন্স্ট্যান্স তৈরি
যদি আপনার একটি তারিখের আইডিয়াল উপাদান বা একটি সময়ের উপাদান থাকে, যেমন বছর, মাস, এবং দিন বা ঘড়ি, মিনিট, এবং সেকেন্ডের উপাদান, তাহলে Carbon এগুলি পরিচালনা করতে পারে।
// নির্দিষ্ট তারিখ থেকে একটি কার্বন ইন্সট্যান্স তৈরি করুন
তারিখ := carbon.CreateFromDate(2022, 12, 25)
fmt.Println(তারিখ.ToDateString()) // আউটপুট: "2022-12-25"
// নির্দিষ্ট সময় থেকে একটি কার্বন ইন্সট্যান্স তৈরি করুন
সময় := carbon.CreateFromTime(23, 59, 59)
fmt.Println(সময়.ToTimeString()) // আউটপুট: "23:59:59"
// তারিখ ও সময় উভয় থেকে একটি কার্বন ইন্সট্যান্স তৈরি করুন
দিনসময় := carbon.CreateFromDateTime(2022, 12, 25, 23, 59, 59)
fmt.Println(দিনসময়.ToDateTimeString()) // আউটপুট: "2022-12-25 23:59:59"
2.3 স্ট্রিং থেকে পার্সিং টাইম
তারিখ-সময়ের প্রতিনিধিতা হিসাবে স্ট্রিং হ্যান্ডলিং একটি সাধারণ দৃশ্য। Carbon তাদের কার্বন ইন্সট্যান্সে স্ট্রিংগুলি পার্স করতে সুবিধা সরবরাহ করে।
মানক সময় ফরম্যাটের জন্য carbon.Parse
ব্যবহার করে:
// একটি স্ট্রিং ডাটার সাথে পার্স করুন
c := carbon.Parse("202-08-05 13:14:15", carbon.PRC)
if c.Error != nil {
fmt.Printf("ত্রুটি: %v",c.Error)
} else {
fmt.Println(c.ToDateTimeString()) // আউটপুট: "202-08-05 13:14:15"
}
// RFC3339 ফরম্যাটে পার্স করা
rfc3339 := carbon.Parse("202-08-05T13:14:15+08:00")
fmt.Println(rfc3339.ToString()) // আউটপুট: "202-08-05 13:14:15 +080 CST"
কাস্টম ফরম্যাটের সাথে ParseByFormat
এবং ParseByLayout
আপনি যে স্পেসিফিক ফরম্যাটের স্ট্রিং পার্স করতে পারেন যা সরাসরি carbon.Parse
দ্বারা ব্যবস্থা করা হয়নি।
// ফরম্যাট দ্বারা স্ট্রিং পার্স করুন এবং Carbon ইন্সট্যান্স
byFormat := carbon.ParseByFormat("202|08|05 13|14|15", "2006|01|02 15|04|05")
fmt.Println(byFormat.ToDateTimeString()) // আউটপুট: "202-08-05 13:14:15"
// লেআউট দ্বারা স্ট্রিং পার্স করুন এবং Carbon ইন্সট্যান্স
byLayout := carbon.ParseByLayout("202|08|05", "2006|01|02")
fmt.Println(byLayout.ToDateString()) // আউটপুট: "202-08-05"
ত্রুটি নিয়ন্ত্রণ
পার্সিং যত তাৎপর্যপূর্ণ কাজে সবসময় ত্রুটি
ফিল্ডটি চেক করুন:
অবৈধতা := carbon.Parse("এটা একটি তারিখ নয়", carbon.PRC)
if অবৈধতা.IsInvalid() {
fmt.Println("তারিখ পার্স করতে ত্রুটি:", অবৈধতা.Error)
}
মনে রাখবেন, ত্রুটিসহ ভাল তরফের তর্জা অপেক্ষা অপ্রত্যাশিত ফলাফল বা সিস্টেম ক্র্যাশ প্রতিরোধ করার জন্য তারিখ এবং সময় সঙ্গে কাজ করার গুরুত্বপূর্ণ অংশ।