Go में दिनांक और समय के साथ कार्य का परिचय
\nदिनांक और समय के साथ कार्य करना किसी भी गंभीर एप्लिकेशन में मुख्य कार्यों में से एक है। चाहे वह इवेंट लॉगिंग हो, टाइम-आउट की गणना हो, शेड्यूल के साथ कार्य हो या टाइम सीरीज़ का विश्लेषण हो, Go भाषा मानक पैकेज time में एक शक्तिशाली और सुरुचिपूर्ण टूलकिट प्रदान करती है। इस लेख में हम Go में दिनांक और समय के साथ कार्य को A से Z तक कवर करेंगे: समय ऑब्जेक्ट बनाने से लेकर टाइम ज़ोन और टाइमर के साथ जटिल संचालन तक।
मूल बातें: time.Time संरचना और दिनांक बनाना
\nपैकेज time का केंद्रीय तत्व time.Time संरचना है। यह नैनोसेकंड सटीकता और टाइम ज़ोन की जानकारी के साथ समय के एक क्षण का प्रतिनिधित्व करता है।
वर्तमान समय प्राप्त करना
\nसबसे सामान्य परिदृश्य वर्तमान क्षण प्राप्त करना है:
\npackage main\n\nimport (\n "fmt"\n "time"\n)\n\nfunc main() {\n now := time.Now()\n fmt.Println("वर्तमान समय:", now)\n}\n\nएक विशिष्ट दिनांक बनाना
\nदिनांक बनाने के लिए फ़ंक्शन time.Date() का उपयोग किया जाता है। ध्यान दें: Go में महीने कॉन्स्टेंट (time.January, time.February आदि) या 1 से 12 तक की संख्या के माध्यम से निर्दिष्ट किए जाते हैं।
func main() {\n // 15 मार्च 2025, 14:30:00, UTC\n specificDate := time.Date(2025, time.March, 15, 14, 30, 0, 0, time.UTC)\n fmt.Println("विशिष्ट दिनांक:", specificDate)\n \n // नैनोसेकंड के साथ बनाना\n preciseDate := time.Date(2025, 3, 15, 14, 30, 0, 123456789, time.UTC)\n fmt.Println("सटीक दिनांक:", preciseDate)\n}\n\nदिनांक फ़ॉर्मेटिंग और पार्सिंग
\nGo में फ़ॉर्मेटिंग के लिए एक अनूठा दृष्टिकोण उपयोग किया जाता है: %Y-%m-%d जैसे कोड के बजाय, आप संदर्भ समय Mon Jan 2 15:04:05 MST 2006 का उपयोग करते हैं (जिसे 01 02 03 04 05 06 07 के रूप में पढ़ा जाता है - वर्ष, महीना, दिन, घंटा, मिनट, सेकंड, वर्ष)।
फ़ॉर्मेटिंग (time → स्ट्रिंग)
\nविधि Format() दिए गए पैटर्न के अनुसार समय को स्ट्रिंग में बदलती है:
func main() {\n now := time.Now()\n \n // मानक प्रारूप\n fmt.Println("RFC3339:", now.Format(time.RFC3339))\n fmt.Println("दिनांक:", now.Format("2006-01-02"))\n fmt.Println("समय:", now.Format("15:04:05"))\n fmt.Println("पूर्ण प्रारूप:", now.Format("02.01.2006 15:04:05"))\n fmt.Println("सप्ताह के दिन के साथ:", now.Format("Mon, 02 Jan 2006"))\n}\n\nपार्सिंग (स्ट्रिंग → time.Time)
\nफ़ंक्शन time.Parse() स्ट्रिंग को समय संरचना में पार्स करता है। महत्वपूर्ण: पैटर्न इनपुट स्ट्रिंग के प्रारूप से बिल्कुल मेल खाना चाहिए।
func main() {\n // ज्ञात प्रारूप के साथ पार्सिंग\n dateStr := "2025-03-15 14:30:00"\n parsed, err := time.Parse("2006-01-02 15:04:05", dateStr)\n if err != nil {\n panic(err)\n }\n fmt.Println("पार्स किया गया:", parsed)\n \n // टाइम ज़ोन के साथ पार्सिंग\n dateWithZone := "2025-03-15T14:30:00+03:00"\n parsedWithZone, _ := time.Parse(time.RFC3339, dateWithZone)\n fmt.Println("टाइम ज़ोन के साथ:", parsedWithZone)\n}\n\nसमय अंकगणित: अंतराल और तुलना
\nपैकेज time समय अंतराल का प्रतिनिधित्व करने के लिए प्रकार Duration और अंकगणितीय संचालन के लिए विधियाँ प्रदान करता है।
जोड़ और घटाव
\nfunc main() {\n now := time.Now()\n \n // 2 घंटे 30 मिनट जोड़ना\n future := now.Add(2*time.Hour + 30*time.Minute)\n fmt.Println("2.5 घंटे बाद:", future)\n \n // 7 दिन घटाना\n past := now.Add(-7 * 24 * time.Hour)\n fmt.Println("एक सप्ताह पहले:", past)\n \n // कैलेंडर दिनांक के साथ कार्य के लिए AddDate का उपयोग\n nextMonth := now.AddDate(0, 1, 0)\n fmt.Println("एक महीने बाद:", nextMonth)\n}\n\nदिनांकों के बीच अंतर की गणना
\nविधि Sub() Duration लौटाती है:
func main() {\n start := time.Date(2025, 1, 1, 0, 0, 0, 0, time.UTC)\n end