अपने रस्ट प्रोजेक्ट्स में तारीखों और समय में हेरफेर करने के लिए आवश्यक अवधारणाओं में महारत हासिल करें।

शेड्यूलिंग कार्यों और डेटा का विश्लेषण करने से लेकर गणना करने और डेटा प्रतिनिधित्व सुनिश्चित करने तक, दिनांक और समय को संभालना कई अनुप्रयोगों का एक महत्वपूर्ण पहलू है।

दिनांक और समय के साथ काम करने के लिए रस्ट में कई पुस्तकालय और मॉड्यूल हैं। जंग एक अंतर्निर्मित प्रदान करता है समय टोकरा समय से संबंधित संचालन के लिए, और क्रोनो पुस्तकालय तारीख और समय के संचालन के लिए कई अन्य जंग पुस्तकालयों के साथ इंटरऑपरेट करता है।

रस्ट में दिनांक और समय के साथ कार्य करना प्रारंभ करना

क्रोनो रस्ट में दिनांक, समय, समय क्षेत्र और अवधि को संभालने के लिए एक दिनांक-समय पुस्तकालय है। क्रोनो दिनांक और समय प्रकार, समय क्षेत्र और ऑफसेट दिनांक-समय, अवधि और अंतराल, पार्सिंग और स्वरूपण, और कैलेंडर के साथ काम करने के लिए कई सुविधाएँ और एक सहज एपीआई प्रदान करता है।

क्रोनो रस्ट इकोसिस्टम में अन्य पुस्तकालयों के साथ अच्छा खेलता है और मानक के साथ मूल रूप से एकीकृत होता है लाइब्रेरी के I/O लक्षण आपको क्रोनो दिनांक और समय मानों को और विभिन्न से पढ़ने और लिखने की अनुमति देते हैं धाराएँ।

इसके अतिरिक्त, Chrono के माध्यम से क्रमांकन और अक्रमांकन के लिए समर्थन है सर्दे टोकरा, JSON, YAML और अन्य स्वरूपों में क्रोनो प्रकारों के साथ काम करना आसान बनाता है। Serde के साथ क्रोनो का एकीकरण इसे दिनांक-समय के संचालन के लिए उपयुक्त बनाता है रस्ट में वेब एप्लिकेशन बनाना.

आप अपने स्थान को पुनः प्राप्त करने के लिए क्रोनो का उपयोग कर सकते हैं यूटीसी (समन्वित सार्वभौमिक समय) रूपांतरण जैसे कई कार्यों के लिए।

इस निर्देश को इसमें जोड़ें निर्भरता आपका खंड कार्गो.टोमल फ़ाइल को स्थापित करने और उपयोग करने के लिए chrono टोकरा:

[निर्भरता]
chrono = "0.4.24"

इंस्टॉल करने के बाद chrono टोकरा, आप उपयोग कर सकते हैं chrono इस प्रकार टोकरा आयात करके अपने रस्ट प्रोजेक्ट में:

उपयोग क्रोनो:: प्रस्तावना ::*;

क्रोनो रस्ट क्रेट में से एक है जिसकी आपको अपने विकास शस्त्रागार में आवश्यकता होगी क्योंकि यह दिनांक और समय संचालन के लिए अधिकांश सुविधाएँ प्रदान करता है।

क्रोनो के साथ रस्ट में टाइमज़ोन और टाइम हैंडलिंग

टाइमज़ोन सुनिश्चित करते हैं कि टाइमस्टैम्प और समय से संबंधित जानकारी विभिन्न भौगोलिक स्थानों में सटीक और सुसंगत हैं। समय से संबंधित डेटा के साथ काम करते समय अस्पष्टता और अशुद्धियों को रोकने के लिए समय क्षेत्र पर विचार करना आवश्यक है। टाइमस्टैम्प की तुलना करने, अवधि की गणना करने, या उचित टाइमज़ोन प्रबंधन के बिना ईवेंट शेड्यूल करने जैसे ऑपरेशन अप्रत्याशित परिणाम दे सकते हैं।

आप क्रोनो के साथ समय क्षेत्रों के बीच परिवर्तित कर सकते हैं। यहाँ एक परिवर्तित करने का एक उदाहरण है दिनांक समय एक समयक्षेत्र से दूसरे में:

उपयोग क्रोनो:: {डेटटाइम, यूटीसी, लोकल, टाइमज़ोन};

fnकन्वर्ट_टाइमज़ोन() {
होने देना utc_time: दिनांक समय = यूटीसी:: अब ();
होने देना स्थानीय_समय: दिनांक समय = utc_time.with_timezone (और स्थानीय);

प्रिंटल!("यूटीसी समय: {}", यूटीसी_टाइम);
प्रिंटल!("स्थानीय समय: {}", स्थानीय समय);
}

कन्वर्ट_टाइमज़ोन फ़ंक्शन वर्तमान यूटीसी को इसके साथ पुनर्प्राप्त करता है यूटीसी:: अब विधि, यूटीसी को स्थानीय टाइमज़ोन में परिवर्तित करती है with_timezone विधि जो के संदर्भ में लेती है स्थानीय संरचना और रिटर्न ए दिनांक समय वस्तु समय में एक ही बिंदु का प्रतिनिधित्व करती है लेकिन स्थानीय समयक्षेत्र में।

जब आप कॉल करते हैं कन्वर्ट_टाइमज़ोन फ़ंक्शन, यह UTC और स्थानीय समय को कंसोल पर प्रिंट करेगा।

इसके अतिरिक्त, क्रोनो डेलाइट सेविंग टाइम (डीएसटी) और टाइमज़ोन ऑफ़सेट के लिए सुविधाजनक तरीके और कार्यात्मकता प्रदान करता है। आपके सिस्टम में, आप कर सकते हैं डेलाइट सेविंग टाइम के लिए घड़ी को समायोजित करें सेटिंग्स ऐप या कंट्रोल पैनल के माध्यम से।

डीएसटी और टाइम ऑफ़सेट के साथ क्रोनो की क्षमताओं को दिखाने वाला एक उदाहरण यहां दिया गया है:

उपयोग क्रोनो:: {डेटटाइम, यूटीसी, फिक्स्डऑफसेट};

fnहैंडल_डीएसटी() {
होने देना utc_time: दिनांक समय = यूटीसी:: अब ();
होने देना ny_timezone = फिक्स्ड ऑफ़सेट:: पूर्व (5 * 3600);
// ईस्टर्न डेलाइट टाइम (EDT) UTC-4:00

होने देना ny_time: दिनांक समय = utc_time.with_timezone (&ny_timezone);

प्रिंटल!("यूटीसी समय: {}", यूटीसी_टाइम);
प्रिंटल!("न्यूयॉर्क का समय: {}", न्यूयॉर्क टाइम);
}

हैंडल_डीएसटी फ़ंक्शन के साथ वर्तमान समय तक पहुँचता है अब विधि के साथ ऑफसेट समय के लिए लेखांकन करते समय न्यूयॉर्क में समय को पुनः प्राप्त करता है फिक्स्डऑफसेट:: पूर्व तरीका।

कॉल करके with_timezone फ़ंक्शन, आप यूटीसी को न्यूयॉर्क टाइमज़ोन में परिवर्तित कर रहे हैं। क्रोनो उपयुक्त डीएसटी के अनुसार समय समायोजन को संभालता है और रिटर्न करता है दिनांक समय वस्तु।

डीएसटी के साथ काम करते समय, यह याद रखना महत्वपूर्ण है कि डीएसटी संक्रमण विशिष्ट तिथियों और समय पर होता है। क्रोनो का दिनांक समय संरचना इन संक्रमणों को संभालने और विभिन्न समय क्षेत्रों में समय का सटीक प्रतिनिधित्व सुनिश्चित करने के लिए सुसज्जित है।

अवधि और अंतराल गणना

एक अवधि समय में किसी विशिष्ट बिंदु से स्वतंत्र समय है। आपको दो घटनाओं के बीच की अवधि की गणना करने, बीता हुआ समय मापने, या निर्दिष्ट समय से एक निश्चित राशि जोड़ने या घटाने की आवश्यकता हो सकती है।

जंग मानक पुस्तकालय समय क्रेट कुशलतापूर्वक अवधियों को संभालने के लिए व्यापक उपकरण प्रदान करता है।

यहां बताया गया है कि आप किसी फ़ंक्शन के निष्पादन समय को कैसे माप सकते हैं समय टोकरा:

उपयोग क्रोनो:: {डेटटाइम, यूटीसी};
उपयोग एसटीडी:: समय:: तत्काल;

fnमुख्य() {
होने देना प्रारंभ = तत्काल:: अब ();

// कुछ ऑपरेशन करें
// ...

होने देना अंत = तत्काल:: अब ();
होने देना अवधि = end.duration_since (प्रारंभ);

प्रिंटल!("बीता हुआ समय: {:?}", अवधि);
}

मुख्य फ़ंक्शन वर्तमान समय को पुनर्प्राप्त करता है तुरंत अंतर्निहित की विधि समय टोकरा। ऑपरेशन के बाद द मुख्य फ़ंक्शन उस पल में समय को पुनः प्राप्त करता है और इसके साथ अंतर का मूल्यांकन करता है अवधि_से कंसोल में समय के अंतर को प्रिंट करने से पहले कार्य करें।

सीरियलाइज़िंग और डिसेरिएलाइज़िंग: क्रोनो का उपयोग करके JSON दिनांक और समय को रस्ट स्ट्रक्चर्स में परिवर्तित करना

JSON से Chrono और Serde का उपयोग करके दिनांक और समय मानों को सीरियलाइज़ करना और डीरिएरलाइज़ करना एक सीधी प्रक्रिया है। सबसे पहले, जोड़ें सेर्डे और serde_json आपके प्रोजेक्ट की निर्भरताओं के लिए क्रेट करता है।

[निर्भरता]
सेर्डे = {संस्करण = "1.0", सुविधाएँ = ["व्युत्पन्न"] }
serde_json = "1.0"

अगला, आपको जंग के प्रकार को परिभाषित करना होगा और इसे लागू करना होगा #[व्युत्पन्न (सीरियलाइज़, डीसेरियलाइज़)] उस प्रकार के लिए विशेषताएँ जहाँ आप डेटा प्रकार निर्दिष्ट करेंगे:

उपयोग क्रोनो:: {डेटटाइम, यूटीसी};

#[व्युत्पन्न (सीरियलाइज़, डीसेरियलाइज़)]
structबैठक {
start_time: दिनांक समय,
एंड_टाइम: डेटटाइम,
}

आप क्रमानुसार कर सकते हैं बैठक क्रोनो की स्वरूपण क्षमताओं के साथ सर्डे के साथ JSON की संरचना।

यहां बताया गया है कि आप इसका उदाहरण कैसे बदल सकते हैं बैठक JSON टाइप करें:

उपयोग Serde_json:: to_string;

fnमुख्य() {
होने देना बैठक = बैठक {
start_time: यूटीसी:: अब (),
end_time: यूटीसी:: अब (),
};

होने देना json = to_string(&meeting).unwrap();
प्रिंटल!("{}", जसन);
}

मुख्य समारोह एक बनाता है बैठक उपयोग करने से पहले फ़ील्ड के लिए वर्तमान UTC के साथ उदाहरण स्ट्रिंग कंसोल पर मुद्रित JSON स्ट्रिंग में स्ट्रक्चर इंस्टेंस को कनवर्ट करने के लिए फ़ंक्शन।

आप आसानी से JSON दिनांक-समय डेटा को Serde_json's के साथ एक संरचना प्रकार में deserialize कर सकते हैं from_str फ़ंक्शन जो JSON स्ट्रिंग लेता है और एक संरचना उदाहरण देता है।

उपयोग सर्दे_जसन:: from_str;

fnमुख्य() {
होने देना जसन = r#"{"start_time": "2023-05-28T12:00:00Z", "end_time": "2023-05-28T14:00:00Z"}"#;

होने देना मीटिंग: मीटिंग = from_str (json).unwrap();
प्रिंटल!("{:#?}", बैठक);
}

मुख्य समारोह JSON स्ट्रिंग से deserializes json में परिवर्तनशील बैठक का उदाहरण बैठक कंसोल पर स्ट्रक्चर इंस्टेंस प्रिंट करने से पहले स्ट्रक्चर।

आप रस्ट के साथ परिष्कृत एप्लिकेशन बना सकते हैं

क्रोनो की मजबूती, उपयोग में आसानी और व्यापक कार्यक्षमता इसे आपके ऐप्स की तारीखों, समय, अवधि और अंतराल को संभालने के लिए एक अनिवार्य उपकरण बनाती है। आप क्रोनो की क्षमताओं का लाभ उठाकर सटीक समय गणना, कुशल समय-निर्धारण और विश्वसनीय तिथि-संबंधित संचालन सुनिश्चित कर सकते हैं।

क्रोनो के लिए एक प्रमुख उपयोग मामला वेब एप्लिकेशन बनाने में है। आप गतिविधि समय रिकॉर्ड, समय उपयोगकर्ता गतिविधि और अन्य वेब संचालन के लिए Chrono का उपयोग कर सकते हैं।