Rust में तिथियों के साथ कार्य: समय प्रसंस्करण के लिए पुस्तकालयों का अवलोकन

शुरुआती लोगों के लिए ऑनलाइन Python प्रशिक्षक

Python आसानी से सीखें बिना सिद्धांत के बोझ के। स्वचालित जांच के साथ व्यावहारिक कार्य हल करें और ब्राउज़र में सीधे कोड लिखें।

पाठ्यक्रम शुरू करें

Rust में तिथियों के साथ कार्य: प्रमुख पुस्तकालयों का अवलोकन



Rust का पारिस्थितिकी तंत्र तिथियों और समय के साथ काम करने के लिए कई शक्तिशाली पुस्तकालय प्रदान करता है। अपने अंतर्निहित datetime मॉड्यूल वाले Python के विपरीत, Rust में मानक पुस्तकालय केवल न्यूनतम कार्यक्षमता प्रदान करता है (std::time::Instant और Duration), इसलिए गंभीर कार्यों के लिए बाहरी क्रेट्स का सहारा लेना पड़ता है। इस लेख में, हम तीन मुख्य पुस्तकालयों पर विचार करेंगे: Chrono, Time और Jiff।



1. Chrono — डी-फैक्टो मानक



Chrono सबसे लोकप्रिय पुस्तकालय है (100 मिलियन से अधिक डाउनलोड)। यह तिथियों, समय, समय क्षेत्रों और स्वरूपण के साथ काम करने के लिए उपकरणों का एक पूरा सेट प्रदान करता है।



मुख्य विशेषताएँ:

  • NaiveDate, NaiveDateTime — बिना समय क्षेत्र के तिथियाँ और समय
  • DateTime<Tz> — समय क्षेत्र से जुड़ी तिथि-समय
  • Duration और अंकगणितीय संक्रियाओं का समर्थन
  • format! के माध्यम से स्वरूपण और स्ट्रिंग पार्सिंग
  • कैलेंडर के साथ कार्य (ग्रेगोरियन, ISO)


कोड उदाहरण:

use chrono::{DateTime, Utc, NaiveDate, Duration};

fn main() { // UTC में वर्तमान समय let now: DateTime<Utc> = Utc::now(); println!("वर्तमान समय: {}", now.format("%Y-%m-%d %H:%M:%S"));

// एक विशिष्ट तिथि बनाना let date = NaiveDate::from_ymd_opt(2025, 3, 15).unwrap(); println!("तिथि: {}", date);

// तिथियों के साथ अंकगणित let future = now + Duration::days(30); println!("30 दिनों के बाद: {}", future.format("%d.%m.%Y"));

// स्ट्रिंग पार्सिंग let parsed = "2025-01-01 12:00:00" .parse::<DateTime<Utc>>() .expect("तिथि का गलत प्रारूप"); println!("पार्स किया गया: {}", parsed);}


Chrono अधिकांश परियोजनाओं के लिए उपयुक्त है, लेकिन यदि केवल बुनियादी कार्यक्षमता की आवश्यकता है तो यह अत्यधिक हो सकता है।



2. Time — आधुनिक विकल्प



Time क्रेट (डेवलपर Jacob Pratt) को Chrono के अधिक सुरक्षित और एर्गोनोमिक विकल्प के रूप में प्रस्तुत किया गया है। यह सख्त टाइपिंग का उपयोग करता है और रनटाइम में पैनिक से बचता है।



मुख्य अंतर:

  • सभी संक्रियाएँ Result लौटाती हैं — कोई छिपी हुई पैनिक नहीं
  • अधिक सख्त प्रकार प्रणाली: तिथियों, समय, ऑफसेट के लिए अलग-अलग प्रकार
  • ISO 8601 और RFC 3339 के लिए अंतर्निहित समर्थन
  • छोटा आकार और तेज़ संकलन


कोड उदाहरण:

use time::{Date, Month, OffsetDateTime, Duration, format_description};

fn main() -> Result<(), time::Error> { // वर्तमान समय let now = OffsetDateTime::now_utc(); println!("अभी: {}", now);

// तिथि बनाना (बिना पैनिक के) let date = Date::from_calendar_date(2025, Month::March, 15)?; println!("तिथि: {}", date);

// अंकगणित let week_later = now + Duration::weeks(1); println!("एक सप्ताह बाद: {}", week_later);

// स्पष्ट प्रारूप के साथ पार्सिंग let format = format_description::parse("[year]-[month]-[day]")?; let parsed = Date::parse("2025-12-31", &format)?; println!("पार्सिंग: {}", parsed); Ok(())}


Time नई परियोजनाओं के लिए एक उत्कृष्ट विकल्प है जहाँ सुरक्षा और पूर्वानुमानशीलता महत्वपूर्ण है।



3. Jiff — नवीनतम खिलाड़ी



Jiff (BurntSushi द्वारा, regex और ripgrep के निर्माता) सबसे नया पुस्तकालय है (2024 में रिलीज़)। यह समय क्षेत्रों और अंतर्राष्ट्रीयकरण के साथ काम करने पर केंद्रित है।



विशेषताएँ:

  • अंतर्निहित समय क्षेत्र डेटाबेस (IANA)
  • गैर-मानक कैलेंडर का समर्थन (इस्लामिक, यहूदी और अन्य)
  • अंतराल और अवधियों के साथ उन्नत कार्य
  • आलसी गणनाओं के कारण उच्च प्रदर्शन


कोड उदाहरण:

अनुशंसाएँ