Στη 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.
Έχεις πέντε εργασίες, οι οποίες όλες θα έχουν να κάνουν με ημερομηνίες ραντεβού.
Υλοποίησε τη συνάρτηση Schedule ώστε να αναλύει μια κειμενική αναπαράσταση της ημερομηνίας ενός ραντεβού και να τη μετατρέπει στην αντίστοιχη μορφή time.Time:
Schedule("7/25/2019 13:45:00")
// => 2019-07-25 13:45:00 +0000 UTC
Υλοποίησε τη συνάρτηση HasPassed που παίρνει μια ημερομηνία ραντεβού και ελέγχει αν το ραντεβού ήταν κάπου στο παρελθόν:
HasPassed("July 25, 2019 13:45:00")
// => true
Υλοποίησε τη συνάρτηση IsAfternoonAppointment που παίρνει μια ημερομηνία ραντεβού και ελέγχει αν το ραντεβού είναι το απόγευμα (>= 12:00 και < 18:00):
IsAfternoonAppointment("Thursday, July 25, 2019 13:45:00")
// => true
Υλοποίησε τη συνάρτηση Description που παίρνει μια ημερομηνία ραντεβού και επιστρέφει μια περιγραφή αυτής της ημερομηνίας και ώρας:
Description("7/25/2019 13:45:00")
// => "You have an appointment on Thursday, July 25, 2019, at 13:45."
Υλοποίησε τη συνάρτηση AnniversaryDate που επιστρέφει την ημερομηνία επετείου των εγκαινίων του ινστιτούτου για το τρέχον έτος σε UTC.
Υποθέτοντας ότι το τρέχον έτος είναι το 2020:
AnniversaryDate()
// => 2020-09-15 00:00:00 +0000 UTC
Σημείωση: η τιμή επιστροφής είναι time.Time και η ώρα της ημέρας δεν έχει σημασία.
Γράψου στο Exercism για να μάθεις και να κατακτήσεις Go με 34 έννοιες165 ασκήσεις και πραγματική καθοδήγηση από ανθρώπους, όλα δωρεάν.