Go में तिथि और समय के हेरफेर के लिए उत्कृष्ट अंतर्निहित क्षमताएँ हैं। हालाँकि, विविध बाहरी स्रोतों से तिथियों को पार्स करना अक्सर चुनौतियाँ प्रस्तुत करता है। यह लेख Go में तिथि स्ट्रिंग्स को प्रभावी ढंग से पार्स करने के लिए एक व्यापक मार्गदर्शिका प्रदान करता है, जिसमें सामान्य समस्याएँ और उन्नत तकनीकें शामिल हैं।
विषय सूची
- Go में तिथि और समय का निरूपण
- Go में तिथि स्ट्रिंग्स को पार्स करना
- तिथि स्वरूपों में भिन्नताओं को संभालना
- मजबूत त्रुटि संचालन
- उन्नत पार्सिंग तकनीकें
Go में तिथि और समय का निरूपण
Go का मुख्य तिथि और समय प्रकार time.Time
है, जो समय के एक विशिष्ट बिंदु का प्रतिनिधित्व करता है। महत्वपूर्ण रूप से, time.Time
में स्वयं कोई स्वरूप नहीं होता है; स्वरूपण और पार्सिंग यह निर्धारित करते हैं कि इसे स्ट्रिंग के रूप में कैसे दर्शाया जाता है।
time
पैकेज के भीतर प्रमुख फ़ंक्शन शामिल हैं:
time.Now()
: वर्तमान समय देता है।time.Parse()
: एक तिथि स्ट्रिंग कोtime.Time
ऑब्जेक्ट में पार्स करता है।time.Format()
: एकtime.Time
ऑब्जेक्ट को स्ट्रिंग में स्वरूपित करता है।time.Date()
: अलग-अलग घटकों (वर्ष, महीना, दिन, आदि) से एकtime.Time
ऑब्जेक्ट बनाता है।
Go में तिथि स्ट्रिंग्स को पार्स करना
time.Parse()
फ़ंक्शन तिथि स्ट्रिंग्स को पार्स करने के लिए केंद्रीय है। इसका सिग्नेचर है:
func Parse(layout string, value string) (Time, error)
layout
: एक स्ट्रिंग जो value
स्ट्रिंग के स्वरूप को परिभाषित करती है। यह विशिष्ट लेआउट वर्णों (नीचे तालिका देखें) का उपयोग करता है। केस संवेदनशीलता महत्वपूर्ण है।
value
: पार्स करने के लिए तिथि स्ट्रिंग।
रिटर्न: एक time.Time
ऑब्जेक्ट (सफलता पर) और एक त्रुटि (विफलता पर)।
लेआउट वर्ण | वर्णन | उदाहरण |
---|---|---|
2 |
वर्ष (06) | वर्ष 2006 के लिए 06 |
06 |
वर्ष (06) | वर्ष 2006 के लिए 06 |
02 |
महीना (01-12) | जनवरी के लिए 01 |
Jan |
महीना (Jan-Dec) | जनवरी के लिए Jan |
_2 |
दिन (01-31) | दूसरे के लिए 02 |
01 |
दिन (01-31) | पहले के लिए 01 |
15 |
घंटा (15-घंटा प्रारूप) | दोपहर 3 बजे के लिए 15 |
03 |
घंटा (00-23) | सुबह 3 बजे के लिए 03 |
04 |
मिनट (00-59) | 4 मिनट के लिए 04 |
05 |
सेकंड (00-59) | 5 सेकंड के लिए 05 |
MST |
समय क्षेत्र (जैसे, MST) | माउंटेन स्टैंडर्ड टाइम के लिए MST |
उदाहरण:
package main
import (
"fmt"
"time"
)
func main() {
dateString := "January 2, 2024"
layout := "January _2, 2006"
t, err := time.Parse(layout, dateString)
if err != nil {
fmt.Println("तिथि पार्स करते समय त्रुटि:", err)
} else {
fmt.Println("पार्स की गई तिथि:", t)
}
}
तिथि स्वरूपों में भिन्नताओं को संभालना
वास्तविक दुनिया के परिदृश्यों में विविध तिथि स्वरूपों को संभालने की आवश्यकता होती है। पार्सिंग से पहले सही स्वरूप की पहचान करने के लिए सशर्त तर्क या नियमित अभिव्यक्तियाँ अक्सर आवश्यक होती हैं।
package main
import (
"fmt"
"regexp"
"time"
)
func main() {
dateString := "01/02/2024"
re1 := regexp.MustCompile(`^(d{2})/(d{2})/(d{4})$`)
re2 := regexp.MustCompile(`^(d{4})-(d{2})-(d{2})$`)
if re1.MatchString(dateString) {
layout := "01/02/2006"
t, err := time.Parse(layout, dateString)
//Handle error and t
} else if re2.MatchString(dateString) {
layout := "2006-01-02"
t, err := time.Parse(layout, dateString)
//Handle error and t
} else {
fmt.Println("असमर्थित तिथि स्वरूप")
}
}
मजबूत त्रुटि संचालन
क्रैश को रोकने के लिए हमेशा time.Parse()
से संभावित त्रुटियों को संभालें। बाहरी डेटा स्रोतों से निपटते समय व्यापक त्रुटि जाँच महत्वपूर्ण है।
उन्नत पार्सिंग तकनीकें
जटिल या अनियमित तिथि स्वरूपों के लिए, ‘go-parse-date’ जैसे पुस्तकालयों का उपयोग करने पर विचार करें जो अधिक परिष्कृत पार्सिंग क्षमताएँ प्रदान करते हैं।