Rust में तिथियों के साथ कार्य: समय और कैलेंडर के लिए लाइब्रेरी
Rust एक आधुनिक सिस्टम प्रोग्रामिंग भाषा है जो सख्त टाइपिंग और मेमोरी सुरक्षा प्रदान करती है। हालाँकि, Rust की मानक लाइब्रेरी तिथियों और समय के साथ कार्य करने के लिए केवल न्यूनतम साधन प्रदान करती है। कैलेंडर, समय क्षेत्रों, फ़ॉर्मेटिंग और गणनाओं के साथ पूर्ण कार्य के लिए, डेवलपर्स तृतीय-पक्ष क्रेट का उपयोग करते हैं। इस लेख में, हम तीन मुख्य लाइब्रेरियों: chrono, time और jiff का विस्तार से विश्लेषण करेंगे, साथ ही व्यावहारिक उदाहरण भी देंगे।
1. chrono लाइब्रेरी — डी-फैक्टो मानक
chrono Rust में तिथियों के साथ कार्य करने के लिए सबसे लोकप्रिय लाइब्रेरी है। यह तिथियों और समय के निर्माण, हेरफेर और फ़ॉर्मेटिंग के लिए एक समृद्ध API प्रदान करती है। मुख्य प्रकार: NaiveDate, NaiveDateTime, DateTime (समय क्षेत्र के साथ) और Duration।
स्थापना
# Cargo.toml[dependencies]chrono = "0.4"उदाहरण: वर्तमान तिथि और समय
use chrono::{Local, Utc};
fn main() { let now_utc = Utc::now(); let now_local = Local::now(); println!("UTC: {}", now_utc); println!("Local: {}", now_local);}उदाहरण: स्ट्रिंग पार्स करना और फ़ॉर्मेटिंग
use chrono::NaiveDate;
fn main() { let date = NaiveDate::parse_from_str("2025-03-15", "%Y-%m-%d") .expect("गलत तिथि प्रारूप"); println!("दिन: {}", date.format("%d.%m.%Y"));}लाभ: विशाल समुदाय, chrono-tz के माध्यम से समय क्षेत्रों का समर्थन, अंतराल और अवधियों के साथ कार्य।
नुकसान: अपेक्षाकृत बड़ा आकार, गैर-मानक कैलेंडर के साथ कार्य करने में जटिलता।
2. time लाइब्रेरी — हल्का विकल्प
time एक अधिक आधुनिक और हल्की लाइब्रेरी है जो सक्रिय रूप से विकसित हो रही है। यह त्रुटियों को रोकने के लिए एक सख्त प्रकार प्रणाली का उपयोग करती है (उदाहरण के लिए, Date, Time, OffsetDateTime और PrimitiveDateTime में विभाजन)।
स्थापना
[dependencies]time = "0.3"उदाहरण: तिथि बनाना और अंतर की गणना
use time::{Date, Month, Duration};
fn main() { let start = Date::from_calendar_date(2025, Month::March, 10).unwrap(); let end = Date::from_calendar_date(2025, Month::March, 20).unwrap(); let diff = end - start; println!("अंतर: {} दिन", diff.whole_days());}उदाहरण: फ़ॉर्मेटिंग
use time::OffsetDateTime;use time::format_description::well_known::Rfc3339;
fn main() { let now = OffsetDateTime::now_utc(); let formatted = now.format(&Rfc3339).unwrap(); println!("RFC 3339: {}", formatted);}लाभ: छोटा आकार, प्रकारों का स्पष्ट विभाजन, उत्कृष्ट दस्तावेज़ीकरण।
नुकसान: chrono की तुलना में इंटरनेट पर कम उदाहरण।
3. jiff लाइब्रेरी — उच्च-सटीक अंतराल के लिए
jiff कैलेंडर अंतराल और आवर्ती घटनाओं के साथ कार्य करने के लिए एक विशेष लाइब्रेरी है। यह शेड्यूलिंग, अनुस्मारक और कार्य दिवसों की गणना के कार्यों के लिए उपयोगी है।
स्थापना
[dependencies]jiff = "0.1"उदाहरण: अंतराल बनाना और समावेशन की जाँच
use jiff::ZonedInterval;use jiff::tz::TimeZone;
fn main() { let tz = TimeZone::get("Europe/Moscow").unwrap(); let start = tz.to_zoned(2025, 3, 1, 0, 0, 0, 0).unwrap(); let end = tz.to_zoned(2025, 3, 31, 23, 59, 59, 0).unwrap(); let interval = ZonedInterval::new(start, end); let check = tz.to_zoned(2025, 3, 15, 12, 0, 0, 0).unwrap(); println!("क्या 15 मार्च अंतराल में आता है? {}", interval.contains(&check));}लाभ: कैलेंडर के लिए सुविधाजनक
पुस्तकालय में भी
TypeScript में डेटाबेस माइग्रेशन: टूल्स और दृष्टिकोणों के लिए पूर्ण गाइड
जावा में PDF जनरेशन: iText, Apache PDFBox, OpenPDF लाइब्रेरीज़ का अवलोकन
जावास्क्रिप्ट (Node.js) में तिथियों के साथ कार्य करना: लोकप्रिय लाइब्रेरी
Prometheus मेट्रिक्स Go (Golang) में: पूर्ण मॉनिटरिंग गाइड