Διαδρομές
/
Go
Go
/
Ασκήσεις
/
Ραντεβού για ομορφιά
Ραντεβού για ομορφιά

Ραντεβού για ομορφιά

Άσκηση εκμάθησης

Εισαγωγή

Στη Go, ο Time είναι ένας τύπος που περιγράφει μια χρονική στιγμή. Οι πληροφορίες ημερομηνίας και ώρας μπορούν να προσπελαστούν, να συγκριθούν και να τροποποιηθούν μέσω των μεθόδων του, αλλά υπάρχουν και κάποιες συναρτήσεις που καλούνται στο ίδιο το πακέτο time. Η τρέχουσα ημερομηνία και ώρα μπορούν να ανακτηθούν μέσω της συνάρτησης time.Now.

Η συνάρτηση time.Parse μετατρέπει συμβολοσειρές σε τιμές του τύπου Time. Η Go έχει έναν ιδιαίτερο τρόπο για να ορίσεις τη διάταξη που περιμένεις για τη μετατροπή. Πρέπει να γράψεις ένα παράδειγμα της διάταξης χρησιμοποιώντας τις τιμές από αυτήν την ειδική χρονοσφραγίδα: Mon Jan 2 15:04:05 -0700 MST 2006.

Για παράδειγμα:

import "time"

func parseTime() time.Time {
    date := "Tue, 09/22/1995, 13:00"
    layout := "Mon, 01/02/2006, 15:04"

    t, err := time.Parse(layout,date) // time.Time, error
}

// => 1995-09-22 13:00:00 +0000 UTC

Η μέθοδος Time.Format() επιστρέφει μια αναπαράσταση του χρόνου ως συμβολοσειρά. Όπως ακριβώς με τη συνάρτηση Parse, η επιθυμητή διάταξη ορίζεται και πάλι μέσω ενός παραδείγματος που χρησιμοποιεί τις τιμές από την ειδική χρονοσφραγίδα.

Για παράδειγμα:

import (
    "fmt"
    "time"
)

func main() {
    t := time.Date(1995,time.September,22,13,0,0,0,time.UTC)
    formattedTime := t.Format("Mon, 01/02/2006, 15:04") // string
    fmt.Println(formattedTime)
}

// => Fri, 09/22/1995, 13:00

Επιλογές διάταξης

Για μια προσαρμοσμένη διάταξη, χρησιμοποίησε συνδυασμό αυτών των επιλογών. Στη Go υπάρχουν επίσης προκαθορισμένες σταθερές μορφοποίησης για ημερομηνία και χρονοσφραγίδα.

Time Options
Έτος 2006 ; 06
Μήνας Jan ; January ; 01 ; 1
Ημέρα 02 ; 2 ; _2 (για αρχικό 0)
Ημέρα εβδομάδας Mon ; Monday
Ώρα 15 ( μορφή 24ώρου ) ; 3 ; 03 (π.μ. ή μ.μ.)
Λεπτό 04 ; 4
Δευτερόλεπτο 05 ; 5
Ένδειξη π.μ./μ.μ. PM
Ημέρα του έτους 002 ; __2

Ο τύπος time.Time έχει διάφορες μεθόδους για την πρόσβαση σε μια συγκεκριμένη χρονική στιγμή. π.χ. Ώρα: Time.Hour(), Μήνας: Time.Month(). Περισσότερα για το πώς λειτουργεί αυτό μπορείς να βρεις στην επίσημη τεκμηρίωση.

Το πακέτο time περιλαμβάνει έναν ακόμη τύπο, το Duration, που αναπαριστά χρόνο που έχει περάσει, καθώς και υποστήριξη για τοποθεσίες/ζώνες ώρας, χρονόμετρα και άλλες σχετικές λειτουργίες που θα καλυφθούν σε μια άλλη έννοια.

Οδηγίες

Σε αυτή την άσκηση θα δουλέψεις πάνω σε μια εφαρμογή προγραμματισμού ραντεβού για ένα ινστιτούτο αισθητικής που άνοιξε στις 15 Σεπτεμβρίου του 2012.

Έχεις πέντε εργασίες, οι οποίες όλες θα έχουν να κάνουν με ημερομηνίες ραντεβού.

1. Ανάλυση της ημερομηνίας του ραντεβού

Υλοποίησε τη συνάρτηση Schedule ώστε να αναλύει μια κειμενική αναπαράσταση της ημερομηνίας ενός ραντεβού και να τη μετατρέπει στην αντίστοιχη μορφή time.Time:

Schedule("7/25/2019 13:45:00")
// => 2019-07-25 13:45:00 +0000 UTC

2. Έλεγχος αν το ραντεβού έχει ήδη περάσει

Υλοποίησε τη συνάρτηση HasPassed που παίρνει μια ημερομηνία ραντεβού και ελέγχει αν το ραντεβού ήταν κάπου στο παρελθόν:

HasPassed("July 25, 2019 13:45:00")
// => true

3. Έλεγχος αν το ραντεβού είναι το απόγευμα

Υλοποίησε τη συνάρτηση IsAfternoonAppointment που παίρνει μια ημερομηνία ραντεβού και ελέγχει αν το ραντεβού είναι το απόγευμα (>= 12:00 και < 18:00):

IsAfternoonAppointment("Thursday, July 25, 2019 13:45:00")
// => true

4. Περιγραφή της ώρας και της ημερομηνίας του ραντεβού

Υλοποίησε τη συνάρτηση Description που παίρνει μια ημερομηνία ραντεβού και επιστρέφει μια περιγραφή αυτής της ημερομηνίας και ώρας:

Description("7/25/2019 13:45:00")
// => "You have an appointment on Thursday, July 25, 2019, at 13:45."

5. Επιστροφή της ημερομηνίας επετείου των εγκαινίων του ινστιτούτου

Υλοποίησε τη συνάρτηση AnniversaryDate που επιστρέφει την ημερομηνία επετείου των εγκαινίων του ινστιτούτου για το τρέχον έτος σε UTC.

Υποθέτοντας ότι το τρέχον έτος είναι το 2020:

AnniversaryDate()

// => 2020-09-15 00:00:00 +0000 UTC

Σημείωση: η τιμή επιστροφής είναι time.Time και η ώρα της ημέρας δεν έχει σημασία.

Επεξεργασία μέσω GitHub Ο σύνδεσμος ανοίγει σε νέο παράθυρο ή καρτέλα
Go Exercism

Έτοιμος να ξεκινήσεις την άσκηση Ραντεβού για ομορφιά;

Γράψου στο Exercism για να μάθεις και να κατακτήσεις Go με 34 έννοιες165 ασκήσεις και πραγματική καθοδήγηση από ανθρώπους, όλα δωρεάν.