.NET में समय की अवधारणा DateTime स्ट्रक्चर के ज़रिए संभाली जाती है। स्थानीय समय और UTC के बीच बदलने के लिए रूटीन मौजूद हैं। TimeSpan की मदद से गणितीय गणनाएँ की जा सकती हैं।
TimeZoneInfo क्लास अलग-अलग समय क्षेत्रों के बीच के अंतर को संभालने के लिए रूटीन देती है। TimeZoneInfo क्लास में ऐसी मेथड भी हैं जो डेलाइट सेविंग समय से निपटना आसान बनाती हैं।
CultureInfo क्लास लोकेल पर निर्भर तारीख और समय के फॉर्मेट का समर्थन करती है।
क्रॉस-प्लेटफॉर्म कोडिंग का समर्थन करने के लिए RuntimeInformation क्लास की मदद से आप पता लगा सकते हैं कि आपका कोड किस ऑपरेटिंग सिस्टम पर चल रहा है, Linux, Windows या OSX।
इस अभ्यास में आप फिर सैलून की दुनिया में लौटते हैं (इसका परिचय सबसे पहले datetimes अभ्यास में मिला था)। आपके कई प्रोजेक्ट की तरह इस बार भी आपके एक और क्लाइंट को बहुत सफलता मिली है और उसने न्यूयॉर्क के अपने मुख्य ठिकाने के अलावा लंदन और पेरिस में भी शाखाएँ खोल ली हैं।
static Appointment.ShowLocalTime() मेथड लागू कीजिए, जो एक UTC समय लेता है और उसे स्थानीय समय के रूप में लौटाता है।
// For a student in NY
Appointment.ShowLocalTime(new DateTime(2030, 7, 25, 13, 45, 0));
// => {2030, 7, 25, 8, 45, 0}
हर सैलून अपनी बुकिंग खुद लेता है। जो समय डाला जाता है, वह सैलून की जगह के हिसाब से स्थानीय समय होता है। जैसे, अगर कोई न्यूयॉर्क के सैलून में किसी अपॉइंटमेंट के लिए 13:45 का समय डालता है, तो उसे उम्मीद होगी कि क्लाइंट दोपहर के भोजन के ठीक बाद पहुँचेगा। इसी तरह, अगर कोई लंदन के सैलून के लिए 13:45 का समय डालता है, तो उसे भी उम्मीद होगी कि क्लाइंट दोपहर के भोजन के ठीक बाद पहुँचेगा।
न्यूयॉर्क, लंदन और पेरिस के टाइम ज़ोन की आईडी जानना आपके काम आएगा।
Mac (OSX) और Linux पर ये हैं:
Windows पर ये हैं:
static Appointment.Schedule() ओवरलोड लागू कीजिए, जो एक लोकेशन और समय की स्ट्रिंग लेता है और अपॉइंटमेंट का UTC समय लौटाता है।
Schedule() को ऐसा बनाना होगा कि बन जाने के बाद कोड Linux, Windows और Mac पर चल सके। यह पहला अभ्यास है जहाँ आपको ऑपरेटिंग सिस्टम की चिंता करनी पड़ेगी। ऊपर बताए गए टाइम ज़ोन आईडी के अंतर को संभालने के लिए अलग-अलग कोड पथ रखने होंगे।
इनपुट में दी जाने वाली डेट-टाइम स्ट्रिंग के मान्य होने की गारंटी है।
Appointment.Schedule("7/25/2030 13:45:00", Location.Paris);
// => {2030, 7, 25, 11, 45, 0}
static Appointment.GetAlertTime() लागू कीजिए, जो अपॉइंटमेंट से 1 दिन (early), 1 घंटा 45 मिनट (standard) और 30 मिनट (late) पहले अलर्ट दे।
Appointment.GetAlertTime(new DateTime(2030, 7, 25, 14, 45, 0), AlertLevel.Early);
// => {2030, 7, 24, 14, 45, 0}
static Appointment.HasDaylightSavingChanged() लागू कीजिए, जो true लौटाता है अगर पिछले 7 दिनों में डेलाइट सेविंग सक्रिय या निष्क्रिय हुई हो।
Appointment.HasDaylightSavingChanged(new DateTime(2020, 3, 30, 14, 45, 0), Location.London);
// => true
स्थानीय स्टाफ जिस प्रारूप से परिचित है, उसी में अपॉइंटमेंट बनाए जा सकें, इसके लिए आपको एक प्रयोगात्मक रूटीन बनाने का काम दिया गया है। इस रूटीन से तारीखें और समय सैलून की जगह के डिफ़ॉल्ट प्रारूप में डाले जा सकेंगे।
Appointment.NormalizeDateTime() मेथड लागू कीजिए, जो उस जगह के अनुकूल प्रारूप में लिखी एक सही डेट-टाइम स्ट्रिंग लेता है और उसे DateTime ऑब्जेक्ट में बदल देता है। इसमें डेट-टाइम को UTC में बदलने की कोशिश नहीं की जाती।
अगर गलत प्रारूप डाला जाए, तो 1/1/1 वाला DateTime लौटाया जाना चाहिए।
Appointment.NormalizeDateTime("25/11/2019 13:45:00", Location.London);
// => {2019, 11, 25, 13, 45, 0}
Appointment.NormalizeDateTime("25/11/2019 13:45:00", Location.NewYork);
// => {1, 1, 1, 0, 0, 0}
Exercism पर साइन अप कीजिए और C# को 62 कॉन्सेप्ट178 अभ्यास तथा असली इंसानों से मिलने वाली मेंटरिंग के साथ सीखिए और उसमें महारत हासिल कीजिए, वह भी बिल्कुल मुफ्त।