ट्रैक
/
Elm
Elm
/
अभ्यास
/
कुरोको की घड़ी
कुरोको की घड़ी

कुरोको की घड़ी

सीखने का अभ्यास

परिचय

समय

Time मॉड्यूल का उपयोग मनुष्यों के पढ़ने लायक तारीखें और समय दिखाने के लिए किया जाता है। हालाँकि Time की मदद से समय को संशोधित करना तकनीकी रूप से संभव है, फिर भी Elm समुदाय में ऐसे पैकेज मौजूद हैं जो इस काम के लिए कहीं ज़्यादा उपयुक्त हैं, जैसे justinmimbs/date या CoderDennis/elm-time-format।

Posix

समय को Posix नाम के ओपेक टाइप से निरूपित किया जाता है, जो यूनिक्स एपॉक टाइम को अपने अंदर समेटता है। यूनिक्स एपॉक टाइम का मतलब है 1 जनवरी 1970 की आधी रात (UTC) से अब तक बीते मिलीसेकंड की संख्या। एक Posix वैल्यू असंदिग्ध होती है और टाइम ज़ोन बदलने पर नहीं बदलती, इसलिए समय रखने के लिए यह अच्छा विकल्प है। Elm ऐप्लिकेशन में आम तौर पर Posix समय बाहरी स्रोतों से मिलता है, जैसे ब्राउज़र से।

इन फंक्शनों की मदद से Posix को मिलीसेकंड की संख्या में बदला जा सकता है, और इसका उल्टा भी किया जा सकता है:

posixToMillis : Posix -> Int
millisToPosix : Int -> Posix

टाइम ज़ोन

रोज़मर्रा की ज़िंदगी में हम मनुष्य आम तौर पर Posix नहीं पढ़ते, बल्कि स्थानीय समय पढ़ना पसंद करते हैं, जो पृथ्वी पर हमारी जगह और डेलाइट सेविंग के स्थानीय नियमों पर निर्भर करता है। Elm में यह जानकारी Zone नाम के ओपेक टाइप में संजोई जाती है, जिसे आम तौर पर ब्राउज़र उपलब्ध कराता है।

एक खास Zone हमेशा उपलब्ध रहता है:

utc : Zone

मनुष्यों के लिए समय

एक Posix और एक Zone होने पर हमारे पास इतनी जानकारी होती है कि हम स्थानीय समय को किसी भी स्तर के विवरण के साथ दिखा सकें। इसके लिए इस्तेमाल किए जा सकने वाले फंक्शनों की सूची यह है:

toYear : Zone -> Posix -> Int
toMonth : Zone -> Posix -> Month
toDay : Zone -> Posix -> Int
toWeekday : Zone -> Posix -> Weekday
toHour : Zone -> Posix -> Int
toMinute : Zone -> Posix -> Int
toSecond : Zone -> Posix -> Int
toMillis : Zone -> Posix -> Int

आपने Time के दो और कस्टम टाइप भी देख लिए होंगे:

type Month = Jan | Feb | Mar | Apr | May | Jun | Jul | Aug | Sep | Oct | Nov | Dec
type Weekday = Mon | Tue | Wed | Thu | Fri | Sat | Sun

इन कस्टम टाइपों को मनुष्यों के पढ़ने लायक वैल्यू में बदलने का काम उपयोगकर्ताओं पर छोड़ा गया है।

निर्देश

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

वह आपसे एक छोटा एप्लिकेशन बनाने में मदद माँगता है, जो उसका शेड्यूल उसके दर्शकों के स्थानीय टाइम ज़ोन में दिखाएगा: Kuroko's Clock. उसकी एक और माँग भी है: ऐप को समय दो अलग भाषाओं में दिखाना आना चाहिए: जापानी और अमेरिकी अंग्रेज़ी।

1. तारीख तय है

एक फंक्शन showLocalDate : Locale -> Int -> Month -> Int -> String बनाइए, जो एक (मान्य) स्थानीय तारीख दिखाएगा।

US लोकेल में फॉर्मैट Month/Day/Year होगा, बिना शुरुआती शून्यों के।

JP लोकेल में फॉर्मैट Year年Month月Day日 होगा, और वहाँ भी शुरुआती शून्य नहीं होंगे।

showLocalDate US 2025 May 1
    -- "5/1/2025"
showLocalDate JP 2025 May 1
    -- "2025年5月1日"

2. अब दिखाने का समय

एक फंक्शन showLocalTime : Locale -> Int -> Int -> String बनाइए, जो एक (मान्य) स्थानीय समय दिखाएगा।

US लोकेल में घंटे 12-घंटे वाले तरीके में "PM" या "AM" के साथ दिखाए जाएँगे, और मिनट शुरुआती शून्यों के साथ दिखाए जाएँगे।

JP लोकेल में घंटा 24-घंटे वाले तरीके में "時" से पहले दिखाया जाएगा, और मिनट "分" से पहले बिना शुरुआती शून्यों के दिखाए जाएँगे।

showLocalTime US 13 8
    -- "1:08 PM"
showLocalTime JP 13 8
    -- "13時8分"

3. ज़ोन में पहुँचिए

एक फंक्शन showDateTime : Locale -> Zone -> Posix -> String बनाइए, जो किसी खास लोकेल में टाइम ज़ोन के हिसाब से तारीख और समय दिखाएगा।

अंतिम परिणाम दिखाने के लिए showLocalDate और showLocalTime का इस्तेमाल कीजिए।

showDateTime US Time.utc (Time.millisToPosix 0)
    -- "1/1/1970 12:00 AM"
showDateTime JP Time.utc (Time.millisToPosix 0)
    -- "1970年1月1日0時0分"
GitHub के ज़रिए संपादित करें यह लिंक एक नई विंडो या टैब में खुलता है
Elm Exercism

कुरोको की घड़ी शुरू करने के लिए तैयार हैं?

Exercism पर साइन अप कीजिए और Elm को 28 कॉन्सेप्ट110 अभ्यास तथा असली इंसानों से मिलने वाली मेंटरिंग के साथ सीखिए और उसमें महारत हासिल कीजिए, वह भी बिल्कुल मुफ्त।