F#-এ একটি DateTime হলো একটি অপরিবর্তনীয় অবজেক্ট, যার মধ্যে তারিখ এবং সময়, দুটো তথ্যই থাকে। DateTime ইনস্ট্যান্স নিয়ন্ত্রণ করা হয় সেগুলোর মেথড কল করার মাধ্যমে। একবার একটি DateTime তৈরি হয়ে গেলে তার মান আর কখনও বদলানো যায় না। যে মেথড বা ফাংশন দেখে মনে হয় DateTime বদলে দিচ্ছে, তারা আসলে নতুন একটি DateTime রিটার্ন করে।
তারিখ ও সময়ের লিখিত রূপ নির্ভর করে কালচার-এর উপর। ধরুন, একটি DateTime-এর তারিখ ২৮ মার্চ ২০১৯ আর সময় 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 নিয়ে কাজ করে (ইনপুট হিসেবে হোক বা আউটপুট হিসেবে), সেটি বর্তমান কালচারের উপর নির্ভরশীল।
এই অনুশীলনীতে আপনি নিউ ইয়র্কের একটি বিউটি সেলুনের জন্য অ্যাপয়েন্টমেন্ট শিডিউলার নিয়ে কাজ করবেন। সেলুনটি ২০১২ সালের ১৫ সেপ্টেম্বর চালু হয়েছিল।
আপনার চারটি কাজ আছে, যার সবকটিতেই অ্যাপয়েন্টমেন্টের তারিখ জড়িত থাকবে। তারিখ ও সময় নিচের তিনটি ফরম্যাটের একটি ব্যবহার করবে:
"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 ফাংশনটি তৈরি করুন, যা চলতি বছরের অ্যানিভার্সারি তারিখ রিটার্ন করে, যেটি ১৫ সেপ্টেম্বর:
anniversaryDate()
// => DateTime(2019, 9, 15, 0, 0, 0)
Exercism-এ সাইন আপ করুন, F# ট্র্যাকের 18টি কনসেপ্ট148টি অনুশীলনী আর সত্যিকারের মানুষের মেন্টরিং দিয়ে শিখুন ও দক্ষ হয়ে উঠুন, সম্পূর্ণ বিনামূল্যে।