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

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

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

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

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

\n\n

Rust एक सिस्टम प्रोग्रामिंग भाषा है जो सुरक्षा और प्रदर्शन पर बहुत ध्यान देती है। हालांकि, समय क्षेत्रों, लीप सेकंड और प्रारूपों के कारण दिनांकों और समय के साथ कार्य करना हमेशा एक जटिल कार्य होता है। Rust के इकोसिस्टम में कई परिपक्व पुस्तकालय हैं जो इन समस्याओं का समाधान करते हैं। इस लेख में, हम तीन मुख्य पुस्तकालयों पर विचार करेंगे: chrono, time और jiff, और दिखाएंगे कि व्यवहार में उनका उपयोग कैसे करें।

\n\n

1. Chrono — मुख्य मानक

\n

chrono Rust में दिनांकों के साथ कार्य करने के लिए सबसे लोकप्रिय पुस्तकालय है। यह उपकरणों का एक पूरा सेट प्रदान करता है: पार्सिंग, फ़ॉर्मेटिंग, दिनांक अंकगणित, समय क्षेत्रों के साथ कार्य और serde के माध्यम से सीरियलाइज़ेशन।

\n\n

Cargo.toml के माध्यम से स्थापना:

\n
[dependencies]\nchrono = { version = "0.4", features = ["serde"] }
\n\n

बुनियादी उपयोग का उदाहरण:

\n
use chrono::{NaiveDate, NaiveDateTime, Duration, Utc, Local};\n\nfn main() {\n    // UTC में वर्तमान दिनांक और समय\n    let utc_now = Utc::now();\n    println!("अब UTC में: {}", utc_now.format("%Y-%m-%d %H:%M:%S"));\n\n    // स्थानीय समय\n    let local_now = Local::now();\n    println!("स्थानीय समय: {}", local_now.format("%d.%m.%Y %H:%M"));\n\n    // एक विशिष्ट दिनांक बनाना\n    let date = NaiveDate::from_ymd_opt(2025, 3, 14).unwrap();\n    println!("दिनांक: {}", date);\n\n    // दिनांक अंकगणित\n    let next_week = date + Duration::days(7);\n    println!("एक सप्ताह बाद: {}", next_week);\n\n    // स्ट्रिंग पार्स करना\n    let parsed = NaiveDateTime::parse_from_str(\n        "2025-12-31 23:59:59",\n        "%Y-%m-%d %H:%M:%S"\n    ).unwrap();\n    println!("पार्स किया गया: {}", parsed);\n}
\n\n

2. Time पुस्तकालय — आधुनिक विकल्प

\n

time एक नया और अधिक कठोर पुस्तकालय है, जिसे chrono की त्रुटियों को ध्यान में रखते हुए विकसित किया गया है। यह प्रकारों के बीच स्पष्ट विभाजन प्रदान करता है: Date, Time, OffsetDateTime और PrimitiveDateTime। यह दिनांकों के सुविधाजनक निर्माण के लिए मैक्रोज़ का समर्थन करता है।

\n\n

स्थापना:

\n
[dependencies]\ntime = { version = "0.3", features = ["macros", "serde"] }
\n\n

उदाहरण:

\n
use time::{Date, Time, OffsetDateTime, macros::datetime, Duration};\n\nfn main() {\n    // वर्तमान समय\n    let now = OffsetDateTime::now_utc();\n    println!("अब: {}", now);\n\n    // मैक्रो के माध्यम से दिनांक बनाना\n    let meeting = datetime!(2025-06-15 14:30:00 +03:00);\n    println!("बैठक: {}", meeting);\n\n    // घटक निकालना\n    let date = meeting.date();\n    let time = meeting.time();\n    println!("दिनांक: {}, समय: {}", date, time);\n\n    // अंतर की गणना\n    let deadline = datetime!(2025-12-31 00:00:00 UTC);\n    let diff = deadline - now;\n    println!("समय सीमा तक: {} दिन", diff.whole_days());\n\n    // फ़ॉर्मेटिंग\n    let formatted = now.format(\n        &time::format_description::well_known::Rfc3339\n    ).unwrap();\n    println!("RFC 3339: {}", formatted);\n}
\n\n

महत्वपूर्ण: time पुस्तकालय आधिकारिक Rust-संगठन का हिस्सा है और इसे अधिक सुरक्षित माना जाता है, क्योंकि यह अधिकांश विधियों में पैनिक से बचता है (Result का उपयोग करता है)।

\n\n

3. Jiff — नया सितारा

\n

jiff एक अपेक्षाकृत नया पुस्तकालय है जो एर्गोनॉमिक्स और प्रदर्शन पर ध्यान केंद्रित करता है। इसकी मुख्य विशेषता स्वचालित समय क्षेत्र का पता लगाना और कैलेंडर (ग्रेगोरियन, इस्लामिक, यहूदी) के लिए अंतर्निहित समर्थन है।

\n\n

स्थापना:

\n
[dependencies]\njiff = "0.1"
\n\n

उपयोग का उदाहरण:

\n
use jiff::{Zoned, Timestamp, Unit};\n\nfn main() {\n    // समय क्षेत्र के साथ वर्तमान समय\n    let now = Zoned::now();\n    println!("वर्तमान समय: {}", now);\n\n    // timestamp से निर्माण\n    let ts = Timestamp::new(1_700_000_000, 0                    

अनुशंसाएँ