Οι μορφές ημερομηνίας στην JavaScript μπορούν να είναι πολλές, αλλά κάποιες από τις πιο κοινές είναι:
- ISO 8601: Η προτυποποιημένη μορφή ημερομηνίας και ώρας, που περιλαμβάνει τα έτη, μήνες, ημέρες, ώρες, λεπτά, δευτερόλεπτα και ζώνη ώρας. Παράδειγμα:
"2023-07-25T11:58:29.205Z"
- Long Date Format: Ημερομηνία με πλήρη όνομα της ημέρας και του μήνα. Παράδειγμα:
"July 25, 2023"
- Short Date Format: Ημερομηνία με συντομογραφία του μήνα. Παράδειγμα:
"07/25/2023"
- Long Time Format: Ώρα με πλήρη μορφή ώρας και λεπτών, και το AM/PM. Παράδειγμα:
"11:58:29 AM"
- Short Time Format: Ώρα με συντομογραφία. Παράδειγμα:
"11:58 AM"
- Custom Format: Μπορείτε να δημιουργήσετε το δικό σας προσαρμοσμένο format χρησιμοποιώντας τις μεθόδους
getFullYear()
,getMonth()
,getDate()
,getHours()
,getMinutes()
, κ.λπ. για να πάρετε τις απαραίτητες τιμές και να τις συνδυάσετε στον τρόπο που επιθυμείτε.
Οι παραπάνω μορφές μπορούν να εφαρμοστούν μέσω των μεθόδων toDateString()
, toLocaleDateString()
, toLocaleTimeString()
, και άλλων που υποστηρίζονται από τα αντικείμενα Date στην JavaScript. Ανάλογα με την περίπτωση και τις απαιτήσεις σας, μπορείτε να επιλέξετε την κατάλληλη μορφή για να εμφανίσετε ημερομηνίες στην εφαρμογή σας.
Ανεξάρτητα από τη μορφή εισαγωγής της ημερομηνίας, η JavaScript θα εμφανίσει από προεπιλογή τις ημερομηνίες σε μορφή πλήρους κειμένου.
Αυτό σημαίνει ότι όταν εμφανίζετε μια ημερομηνία στον κώδικά σας ή σε έναν HTML στοιχείο, η JavaScript θα χρησιμοποιήσει τη μέθοδο toString()
για να εμφανίσει την ημερομηνία σε μια πλήρη κειμενική μορφή. Αυτή η πλήρης μορφή κειμένου περιλαμβάνει την ημερομηνία, την ώρα και τη ζώνη ώρας, όπως παρατίθεται στο παράδειγμα που δώσατε:
Mon Jul 24 2023 12:44:39 GMT+0300 (Eastern European Summer Time)
Αν θέλετε να εμφανίσετε την ημερομηνία σε διαφορετική μορφή, πρέπει να χρησιμοποιήσετε τις κατάλληλες μεθόδους όπως toDateString()
, toLocaleString()
, toLocaleDateString()
, κλπ., που προσφέρονται από τα αντικείμενα Date στην JavaScript. Αυτές οι μεθόδοι επιτρέπουν την προσαρμογή του τρόπου εμφάνισης της ημερομηνίας σύμφωνα με τις ανάγκες σας.
[adinserter block=”2″]
Η μορφή ISO 8601 (YYYY-MM-DD) είναι το προτιμώμενο φορμάτ ημερομηνιών στη JavaScript.
Η μορφή ISO 8601 παρέχει μια προτυποποιημένη και εύκολα αναγνωρίσιμη αναπαράσταση για ημερομηνίες και ώρες. Χρησιμοποιεί το γνωστό “YYYY-MM-DD” format για να αναπαραστήσει μια ημερομηνία, όπου “YYYY” αντιπροσωπεύει το έτος, “MM” αντιπροσωπεύει το μήνα, και “DD” αντιπροσωπεύει την ημέρα.
Ένα παράδειγμα ημερομηνίας στο ISO 8601 format είναι: “2023-07-25” που αντιστοιχεί στην 25η Ιουλίου 2023.
Οι ημερομηνίες σε μορφή ISO 8601 είναι πολύ διαδεδομένες και χρησιμοποιούνται ευρέως στην ανταλλαγή δεδομένων, τις βάσεις δεδομένων, την αναπαράσταση ημερομηνιών σε αρχεία JSON, και πολλές άλλες περιπτώσεις. Στην JavaScript, το ISO 8601 format είναι επίσης το προεπιλεγμένο φορμάτ για τη μετατροπή ημερομηνιών σε συμβολοσειρές χρησιμοποιώντας τη μέθοδο toISOString()
.
Σύμφωνα με το πρότυπο ISO 8601, οι ημερομηνίες μπορούν να γραφούν χωρίς να προσδιορίζεται η ημέρα. Αυτό σημαίνει ότι μπορείτε να αναπαραστήσετε μια ημερομηνία μόνο με το έτος και τον μήνα (YYYY-MM).
Παραδείγματα:
- “2023-07”: Αναπαριστά τον Ιούλιο 2023.
- “1998-12”: Αναπαριστά τον Δεκέμβριο 1998.
Αυτό το φορμάτ είναι χρήσιμο όταν δεν χρειάζεται να προσδιορίσετε μια συγκεκριμένη ημέρα, αλλά θέλετε να αναπαραστήσετε ένα συγκεκριμένο μήνα και έτος. Σε περιστάσεις όπου η ημέρα δεν είναι σημαντική, το ISO 8601 format με μόνο έτος και μήνα παρέχει μια συμπαγή και κατανοητή αναπαράσταση της ημερομηνίας.
Παρακάτω παρέχονται μερικά παραδείγματα ημερομηνιών σε ISO 8601 format (YYYY-MM):
- “2023-07”: Αναπαριστά τον Ιούλιο 2023.
- “1998-12”: Αναπαριστά τον Δεκέμβριο 1998.
- “2010-01”: Αναπαριστά τον Ιανουάριο 2010.
- “2022-09”: Αναπαριστά τον Σεπτέμβριο 2022.
Μπορείτε να δημιουργήσετε ένα νέο αντικείμενο Date χρησιμοποιώντας αυτό το φορμάτ:
const date1 = new Date("2023-07"); const date2 = new Date("1998-12"); const date3 = new Date("2010-01"); const date4 = new Date("2022-09"); console.log(date1.toISOString()); // "2023-07-01T00:00:00.000Z" console.log(date2.toISOString()); // "1998-12-01T00:00:00.000Z" console.log(date3.toISOString()); // "2010-01-01T00:00:00.000Z" console.log(date4.toISOString()); // "2022-09-01T00:00:00.000Z"
Σημειώστε ότι η ημερομηνία καθορίζεται αυτόματα στην πρώτη ημέρα του μήνα (π.χ. “2023-07-01”), καθώς δεν προσδιορίζεται συγκεκριμένη ημέρα στο φορμάτ ISO 8601 με έτος και μήνα.
Σύμφωνα με το πρότυπο ISO 8601, μπορείτε να αναπαραστήσετε μια ημερομηνία χωρίς να προσδιορίζονται το μήνα και η ημέρα. Αυτό σημαίνει ότι μπορείτε να χρησιμοποιήσετε μόνο το έτος (YYYY).
Παραδείγματα:
- “2023”: Αναπαριστά το έτος 2023.
- “1998”: Αναπαριστά το έτος 1998.
- “2010”: Αναπαριστά το έτος 2010.
- “2022”: Αναπαριστά το έτος 2022.
Αυτή η μορφή είναι χρήσιμη όταν δεν είναι σημαντικό να προσδιορίσετε έναν συγκεκριμένο μήνα ή ημέρα και επιθυμείτε να αναπαραστήσετε μόνο το έτος. Σε περιστάσεις όπου ο μήνας και η ημέρα δεν είναι σημαντικά, το ISO 8601 format με μόνο έτος παρέχει μια απλή και κατανοητή αναπαράσταση της ημερομηνίας.
Για παράδειγμα, μπορείτε να δημιουργήσετε ένα νέο αντικείμενο Date χρησιμοποιώντας αυτό το φορμάτ:
const date1 = new Date("2023"); const date2 = new Date("1998"); const date3 = new Date("2010"); const date4 = new Date("2022"); console.log(date1.toISOString()); // "2023-01-01T00:00:00.000Z" console.log(date2.toISOString()); // "1998-01-01T00:00:00.000Z" console.log(date3.toISOString()); // "2010-01-01T00:00:00.000Z" console.log(date4.toISOString()); // "2022-01-01T00:00:00.000Z"
Σημειώστε ότι η ημερομηνία καθορίζεται αυτόματα στην πρώτη ημέρα του πρώτου μήνα του έτους (π.χ. “2023-01-01”), καθώς δεν προσδιορίζονται συγκεκριμένοι μήνας και ημέρα στο φορμάτ ISO 8601 με μόνο έτος.
Σύμφωνα με το πρότυπο ISO 8601, μπορείτε να αναπαραστήσετε μια ημερομηνία-ώρα με προσθήκη ωρών, λεπτών και δευτερολέπτων (YYYY-MM-DDTHH:MM:SSZ).
[adinserter block=”3″]
Το “T” χρησιμοποιείται για να χωρίσει την ημερομηνία από την ώρα, και “Z” χρησιμοποιείται για να υποδείξει την Ώρα Παγκόσμιου Χρόνου (UTC).
Παραδείγματα:
- “2023-07-12T14:30:00Z”: Αναπαριστά την 12η Ιουλίου 2023, 14:30:00 (ώρα UTC).
- “1998-12-24T08:15:30Z”: Αναπαριστά την 24η Δεκεμβρίου 1998, 08:15:30 (ώρα UTC).
- “2010-01-01T00:00:00Z”: Αναπαριστά την 1η Ιανουαρίου 2010, 00:00:00 (ώρα UTC).
Αυτό το φορμάτ είναι χρήσιμο όταν θέλετε να αναπαραστήσετε μια συγκεκριμένη ημερομηνία με χρονική σφραγίδα (ώρα) για την παγκόσμια χρονική ζώνη (UTC). Επίσης, μπορείτε να χρησιμοποιήσετε αυτό το φορμάτ για να αναπαραστήσετε ημερομηνίες και ώρες σε διεθνείς εφαρμογές που λειτουργούν με ώρες σε διαφορετικές ζώνες.
Παρακάτω παρέχονται μερικά παραδείγματα ημερομηνιών-ώρας σε ISO 8601 format (YYYY-MM-DDTHH:MM:SSZ):
- “2023-07-12T14:30:00Z”: Αναπαριστά την 12η Ιουλίου 2023, 14:30:00 (ώρα UTC).
- “1998-12-24T08:15:30Z”: Αναπαριστά την 24η Δεκεμβρίου 1998, 08:15:30 (ώρα UTC).
- “2010-01-01T00:00:00Z”: Αναπαριστά την 1η Ιανουαρίου 2010, 00:00:00 (ώρα UTC).
Μπορείτε να δημιουργήσετε νέα αντικείμενα Date χρησιμοποιώντας αυτά τα φορμάτ:
const date1 = new Date("2023-07-12T14:30:00Z"); const date2 = new Date("1998-12-24T08:15:30Z"); const date3 = new Date("2010-01-01T00:00:00Z"); console.log(date1.toISOString()); // "2023-07-12T14:30:00.000Z" console.log(date2.toISOString()); // "1998-12-24T08:15:30.000Z" console.log(date3.toISOString()); // "2010-01-01T00:00:00.000Z"
Σημειώστε ότι τα παραπάνω παραδείγματα αναπαριστούν την ίδια ημερομηνία και ώρα, αλλά σε διαφορετική μορφή. Η toISOString() μέθοδος επιστρέφει τις ημερομηνίες σε μορφή ISO 8601, πάντα με την ώρα σε UTC.
Η ημερομηνία και η ώρα στο φορμάτ ISO 8601 χωρίζονται με ένα κεφαλαίο “T” και η ώρα UTC καθορίζεται με το κεφαλαίο “Z”.
Εάν θέλετε να τροποποιήσετε την ώρα σχετικά με την UTC, μπορείτε να αφαιρέσετε το “Z” και να προσθέσετε τη διαφορά ωρών και λεπτών ανάμεσα στην τοπική σας ώρα και την ώρα UTC. Για να το πετύχετε αυτό, προσθέστε το +HH:MM ή -HH:MM μετά την ώρα.
Παραδείγματα:
- “2023-07-12T14:30:00+03:00”: Αναπαριστά την 12η Ιουλίου 2023, 14:30:00 ως ώρα UTC+03:00 (Τοπική ώρα = UTC + 3 ώρες).
- “1998-12-24T08:15:30-05:00”: Αναπαριστά την 24η Δεκεμβρίου 1998, 08:15:30 ως ώρα UTC-05:00 (Τοπική ώρα = UTC – 5 ώρες).
Αυτό επιτρέπει την αναπαράσταση ημερομηνιών και ωρών σε διαφορετικές ζώνες, με τη δυνατότητα προσδιορισμού της σχετικής τοπικής ή UTC ώρας.
Όταν δημιουργείτε μια ημερομηνία χωρίς να καθορίζετε την ζώνη ώρας, η JavaScript θα χρησιμοποιήσει την ζώνη ώρας του προγράμματος περιήγησης (browser’s time zone).
Όταν λαμβάνετε μια ημερομηνία χωρίς να καθορίζετε την ζώνη ώρας, το αποτέλεσμα θα μετατραπεί στη ζώνη ώρας του προγράμματος περιήγησης.
Συνεπώς, αν μια ημερομηνία/ώρα δημιουργείται στην ώρα του GMT (Greenwich Mean Time), η ημερομηνία/ώρα θα μετατραπεί στην ζώνη CDT (Central US Daylight Time) εάν ένας χρήστης περιηγείται από το κεντρικό μέρος των ΗΠΑ.
Είναι σημαντικό να έχετε υπόψη ότι οι ζώνες ώρας μπορεί να επηρεάσουν τις ημερομηνίες και τις ώρες που παρουσιάζονται στους χρήστες, ειδικά αν έχετε παγκόσμια κοινότητα χρηστών. Σε αυτές τις περιπτώσεις, είναι καλό να λαμβάνετε υπόψη τις ζώνες ώρας για να παρέχετε σωστές ημερομηνίες και ώρες στους χρήστες σας.
Οι σύντομες ημερομηνίες στην JavaScript γράφονται με τη σύνταξη “MM/DD/YYYY”. Αυτό σημαίνει ότι η μήνυμα βάζετε τον μήνα, ημέρα και έτος, χρησιμοποιώντας τη μορφή δύο ψηφίων για τον μήνα (MM), την ημέρα (DD) και τέσσερα ψηφία για το έτος (YYYY).
Για παράδειγμα:
- “07/12/2023”: Αναπαριστά την 12η Ιουλίου 2023.
- “12/24/1998”: Αναπαριστά την 24η Δεκεμβρίου 1998.
- “01/01/2010”: Αναπαριστά την 1η Ιανουαρίου 2010.
Για να δημιουργήσετε νέες ημερομηνίες σε αυτήν τη μορφή, μπορείτε να χρησιμοποιήσετε τον κατάλληλο συνδυασμό των μηθοδολογιών Date(), getMonth(), getDate() και getFullYear():
const today = new Date(); const month = today.getMonth() + 1; // Προσοχή: οι μήνες ξεκινούν από το 0 (Ιανουάριος = 0) const day = today.getDate(); const year = today.getFullYear(); const shortDate = `${month}/${day}/${year}`; console.log(shortDate); // Παράδειγμα εξόδου: "7/12/2023" (για μήνα Ιούλιος, ημέρα 12 και έτος 2023)
Αυτό θα δημιουργήσει μια νέα ημερομηνία σε σύντομη μορφή με βάση την τρέχουσα ημερομηνία του υπολογιστή.
[adinserter block=”4″]
Οι ημερομηνίες στην JavaScript γράφονται συνήθως με τη σύνταξη “MMM DD YYYY”. Αυτό σημαίνει ότι γράφετε την συντομογραφία του μήνα (MMM), ακολουθούμενη από την ημέρα (DD) και τέλος το έτος (YYYY).
Για παράδειγμα:
- “Jul 12 2023”: Αναπαριστά την 12η Ιουλίου 2023.
- “Dec 24 1998”: Αναπαριστά την 24η Δεκεμβρίου 1998.
- “Jan 01 2010”: Αναπαριστά την 1η Ιανουαρίου 2010.
Για να δημιουργήσετε ημερομηνίες σε αυτήν τη μορφή, μπορείτε να χρησιμοποιήσετε τη μέθοδο toLocaleString()
μαζί με το ειδικό παράμετρο dateStyle
:
const today = new Date(); const longDate = today.toLocaleString("en-US", { dateStyle: "medium" }); console.log(longDate); // Παράδειγμα εξόδου: "Jul 12, 2023" (για μήνας Ιούλιος, ημέρα 12 και έτος 2023)
Το παράδειγμα παραπάνω δημιουργεί μια νέα μακριά ημερομηνία με βάση την τρέχουσα ημερομηνία του υπολογιστή και την εκτυπώνει στην αγγλική γλώσσα με το μέσο μέγεθος (medium
) που ορίζει τη συντομογραφία του μήνα. Μπορείτε να προσαρμόσετε τον κώδικα στη γλώσσα και το μέγεθος που επιθυμείτε για την ημερομηνία εξόδου.
Στην JavaScript, μπορείτε να γράψετε τον μήνα με πλήρη μορφή (π.χ. “January”) ή συντομογραφημένη μορφή (π.χ. “Jan”). Η επιλογή που θα χρησιμοποιήσετε εξαρτάται από τις προτιμήσεις σας ή τις απαιτήσεις της εφαρμογής σας.
Για να δημιουργήσετε μια μακριά ημερομηνία με πλήρη μορφή του μήνα, μπορείτε να χρησιμοποιήσετε τον αντίστοιχο κωδικό για τον μήνα (από 0 για Ιανουάριος έως 11 για Δεκέμβριος) σε συνδυασμό με τον κατάλληλο πίνακα ονομάτων μηνών:
const monthsFullNames = [ "January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December" ]; const today = new Date(); const monthIndex = today.getMonth(); // Προσοχή: οι μήνες ξεκινούν από το 0 (Ιανουάριος = 0) const day = today.getDate(); const year = today.getFullYear(); const longDate = `${monthsFullNames[monthIndex]} ${day}, ${year}`; console.log(longDate); // Παράδειγμα εξόδου: "July 12, 2023" (για μήνας Ιούλιος, ημέρα 12 και έτος 2023)
Εάν προτιμάτε να χρησιμοποιήσετε συντομογραφημένη μορφή του μήνα (π.χ. “Jan”), μπορείτε να δημιουργήσετε έναν αντίστοιχο πίνακα συντομογραφημένων ονομάτων μηνών και να τον χρησιμοποιήσετε αντίστοιχα.
Στην JavaScript, τα κόμματα που εισάγονται στη μέση των ονομάτων των μηνών αγνοούνται, και τα ονόματα των μηνών είναι ανεξάρτητα από την πεζή ή κεφαλαία γραφή.
Ανεξαρτήτως αν γράφετε τον μήνα ως “January”, “january”, “JaNuArY”, ή ακόμα και “JANUARY”, η JavaScript θεωρεί ότι αναφέρεστε στον Ιανουάριο. Η ίδια αρχή ισχύει και για τους υπόλοιπους μήνες.
Παρακάτω είναι ένα παράδειγμα που δείχνει την ανεξαρτησία των κεφαλαίων και πεζών γραμμάτων κατά την δημιουργία μιας μακριάς ημερομηνίας:
const monthsFullNames = [ "January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December" ]; const today = new Date(); const monthIndex = today.getMonth(); // Προσοχή: οι μήνες ξεκινούν από το 0 (Ιανουάριος = 0) const day = today.getDate(); const year = today.getFullYear(); // Χρησιμοποιούμε την πεζή γραφή για τον μήνα const longDateLowerCase = `${monthsFullNames[monthIndex].toLowerCase()} ${day}, ${year}`; console.log(longDateLowerCase); // Παράδειγμα εξόδου: "july 12, 2023" (για μήνας Ιούλιος, ημέρα 12 και έτος 2023) // Χρησιμοποιούμε κεφαλαία γραφή για τον μήνα const longDateUpperCase = `${monthsFullNames[monthIndex].toUpperCase()} ${day}, ${year}`; console.log(longDateUpperCase); // Παράδειγμα εξόδου: "JULY 12, 2023" (για μήνας Ιούλιος, ημέρα 12 και έτος 2023)
Όπως μπορείτε να δείτε, η JavaScript διαχειρίζεται τα ονόματα των μηνών με ανεξάρτητη πεζή ή κεφαλαία γραφή.
Η μέθοδος Date.parse() σας επιτρέπει να μετατρέψετε μια έγκυρη συμβολοσειρά ημερομηνίας σε χιλιοστά του δευτερολέπτου από την 1η Ιανουαρίου 1970 (Epoch time).
Η μέθοδος Date.parse() μπορεί να διαχειριστεί πολλές μορφές ημερομηνιών, αλλά είναι σημαντικό να λαμβάνετε υπόψη τις τοπικές ρυθμίσεις για τις ημερομηνίες, καθώς ορισμένες μορφές μπορεί να ερμηνεύονται διαφορετικά ανάλογα με τη γεωγραφική τοποθεσία του χρήστη.
[adinserter block=”5″]
Εδώ είναι ένα παράδειγμα χρήσης της Date.parse() για να μετατρέψετε μια συμβολοσειρά ημερομηνίας σε χιλιοστά του δευτερολέπτου:
const dateString = "2023-07-12T12:00:00Z"; // Έγκυρη συμβολοσειρά ημερομηνίας σε μορφή ISO 8601 const milliseconds = Date.parse(dateString); console.log(milliseconds); // Παράδειγμα εξόδου: 1686715200000 (χιλιοστά δευτερολέπτου από την 1η Ιανουαρίου 1970)
Παρακαλώ να σημειώσετε ότι η μέθοδος Date.parse() είναι ευέλικτη, αλλά δεν είναι πάντα ασφαλής για ορισμένες μορφές ημερομηνιών. Για πιο προηγμένη και ασφαλή εργασία με ημερομηνίες, συνιστάται να χρησιμοποιείτε βιβλιοθήκες όπως το Moment.js ή το Date-fns.
Μετά την μετατροπή μιας συμβολοσειράς ημερομηνίας σε χιλιοστά του δευτερολέπτου με την μέθοδο Date.parse(), μπορείτε να χρησιμοποιήσετε αυτόν τον αριθμό για να δημιουργήσετε ένα νέο αντικείμενο Date.
Αυτό είναι χρήσιμο όταν θέλετε να εκτελέσετε περαιτέρω μετατροπές, υπολογισμούς ή παρουσίαση της ημερομηνίας με διαφορετικά στυλ.
Εδώ είναι ένα παράδειγμα που χρησιμοποιεί τον αριθμό χιλιοστών του δευτερολέπτου για να δημιουργήσει ένα νέο αντικείμενο Date:
const dateString = "2023-07-12T12:00:00Z"; // Έγκυρη συμβολοσειρά ημερομηνίας σε μορφή ISO 8601 const milliseconds = Date.parse(dateString); const dateObject = new Date(milliseconds); console.log(dateObject); // Παράδειγμα εξόδου: Tue Jul 12 2023 15:00:00 GMT+0300 (Eastern European Summer Time)
Το νέο αντικείμενο Date που δημιουργείται εξαρτάται από την χρονική ζώνη του υπολογιστή σας. Μπορεί να εμφανίσει την ημερομηνία και την ώρα χρησιμοποιώντας τις προεπιλεγμένες ρυθμίσεις της τοπικής σας χρονικής ζώνης.