DateTime у F# - це незмінний обʼєкт, який містить інформацію як про дату, так і про час. З екземплярами DateTime працюють, викликаючи їхні методи. Після створення DateTime його значення вже не може змінитися. Будь-які методи або функції, які нібито змінюють DateTime, насправді повертають новий DateTime.
Текстове представлення дат і часу залежить від культури. Розгляньмо DateTime, у якого дату встановлено на 28 березня 2019 року, а час встановлено на 14:30:59. Перетворення цього DateTime на string під час використання культури en-US (американська англійська) повертає "3/28/19 2:30:59 PM". Під час використання культури fr-BE (бельгійська французька), той самий код повертає інше значення: "28/03/19 14:30:59".
Важливо знати, які методи DateTime залежать від культури. Загалом, будь-який метод DateTime, який працює з strings (як вхідними, так і вихідними даними), залежатиме від поточної культури.
У цій вправі ми будемо працювати над планувальником зустрічей для салону краси в Нью-Йорку, який відкрився 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 вправ та справжнє наставництво від людей, і все це безкоштовно.