Ένα 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"Οι δοκιμές θα ορίσουν αυτόματα το culture σε en-US, δεν χρειάζεται να ορίσεις ή να προσδιορίσεις εσύ το culture.
Υλοποίησε τη συνάρτηση 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 ασκήσεις και πραγματική καθοδήγηση από ανθρώπους, όλα δωρεάν.