F# में DateTime एक अपरिवर्तनीय ऑब्जेक्ट है जिसमें तारीख और समय, दोनों की जानकारी रहती है। DateTime के इंस्टेंस पर उनके मेथड कॉल करके काम किया जाता है। एक बार कोई DateTime बन जाए, तो उसकी वैल्यू कभी नहीं बदल सकती। जो मेथड या फंक्शन DateTime को बदलते हुए दिखते हैं, वे वास्तव में एक नया DateTime लौटाते हैं।
तारीखों और समय का लिखित रूप कल्चर पर निर्भर करता है। मान लीजिए, एक DateTime है जिसकी तारीख 28 मार्च 2019 और समय 14:30:59 सेट है। जब en-US कल्चर (अमेरिकी अंग्रेज़ी) इस्तेमाल करते हैं, तो इस DateTime को string में बदलने पर "3/28/19 2:30:59 PM" लौटता है। fr-BE कल्चर (बेल्जियम की फ्रेंच) में वही कोड एक अलग वैल्यू लौटाता है: "28/03/19 14:30:59".
यह समझना ज़रूरी है कि कौन-से DateTime मेथड कल्चर पर निर्भर हैं। सामान्य रूप से, DateTime का कोई भी ऐसा मेथड जो string से जुड़ा हो (चाहे इनपुट के रूप में हो या आउटपुट के रूप में), वह मौजूदा कल्चर पर निर्भर होगा।
इस अभ्यास में आप न्यूयॉर्क के एक ब्यूटी सैलून के लिए अपॉइंटमेंट शेड्यूलर पर काम करेंगे, जो 15 सितंबर 2012 को खुला था।
आपके पास चार कार्य हैं, और इन सबमें अपॉइंटमेंट की तारीखों से ही काम पड़ेगा। तारीखें और समय इन तीन फॉर्मैट में से किसी एक में होंगे:
"7/25/2019 13:45:00""July 25, 2019 13:45:00""Thursday, July 25, 2019 13:45:00:00"टेस्ट अपने आप कल्चर को en-US पर सेट कर देंगे। आपको कल्चर खुद सेट करने या बताने की ज़रूरत नहीं है।
ऐसा schedule फंक्शन बनाइए जो अपॉइंटमेंट की तारीख के लिखित रूप को पार्स करके उसे उससे मेल खाने वाले DateTime फॉर्मैट में बदल सके:
schedule "7/25/2019 13:45:00"
// => DateTime(2019, 7, 25, 13, 45, 0)
ऐसा hasPassed फंक्शन बनाइए जो अपॉइंटमेंट की तारीख लेता है और जाँचता है कि वह अपॉइंटमेंट कहीं अतीत में रह गया है या नहीं:
hasPassed (DateTime(1999, 12, 31, 9, 0, 0))
// => true
ऐसा isAfternoonAppointment फंक्शन बनाइए जो अपॉइंटमेंट की तारीख लेता है और जाँचता है कि वह अपॉइंटमेंट दोपहर बाद का है या नहीं (12:00 बजे या उसके बाद, और 18:00 बजे से पहले):
isAfternoonAppointment (DateTime(2019, 03, 29, 15, 0, 0))
// => true
ऐसा description फंक्शन बनाइए जो अपॉइंटमेंट की तारीख लेता है और उस तारीख और समय का विवरण लौटाता है:
description (DateTime(2019, 03, 29, 15, 0, 0))
// => "You have an appointment on 3/29/2019 3:00:00 PM."
ऐसा anniversaryDate फंक्शन बनाइए जो इस साल की सालगिरह की तारीख लौटाता है, यानी 15 सितंबर:
anniversaryDate()
// => DateTime(2019, 9, 15, 0, 0, 0)
Exercism पर साइन अप कीजिए और F# को 18 कॉन्सेप्ट148 अभ्यास तथा असली इंसानों से मिलने वाली मेंटरिंग के साथ सीखिए और उसमें महारत हासिल कीजिए, वह भी बिल्कुल मुफ्त।