Αυτόματη Διόρθωση Ημερομηνιών στο JavaScript
Το JavaScript έχει ένα πολύ ενδιαφέρον και χρήσιμο
χαρακτηριστικό: εάν κατά τη δημιουργία ενός αντικειμένου Date
καθοριστεί μια μη έγκυρη χρονική στιγμή -
θα υπολογιστεί αυτόματα σε μια έγκυρη.
Ας δούμε ένα παράδειγμα.
Όπως γνωρίζετε, η ημερομηνία 35 Ιανουαρίου δεν υπάρχει.
Η μέγιστη δυνατή ημέρα του Ιανουαρίου είναι η 31.
Αυτό σημαίνει ότι η ημερομηνία 35 Ιανουαρίου
έχει 4 επιπλέον ημέρες. Το JavaScript σε μια τέτοια
περίπτωση απλώς θα προσθέσει αυτές τις επιπλέον 4
ημέρες στον επόμενο μήνα:
let date = new Date(2018, 0, 35);
console.log(date); // θα προκύψει 4 Φεβρουαρίου
Μπορούν να καθοριστούν όχι μόνο επιπλέον ημέρες, αλλά
και μήνες. Σε αυτήν την περίπτωση, πρέπει να θυμάστε ότι οι μήνες
ξεκινούν από το μηδέν, και επομένως ο τελευταίος έγκυρος
μήνας είναι ο 11τος. Εάν καθοριστεί ο 12τος
μήνας, τότε θα προκύψει ο Ιανουάριος του επόμενου έτους:
let date = new Date(2018, 12, 1); // καθορίζουμε τον 12ο μήνα
console.log(date); // θα προκύψει 1 Ιανουαρίου 2019
Η περιγραφόμενη διόρθωση λειτουργεί και προς τα κάτω.
Όπως γνωρίζετε, η πιο μικρή
ημέρα του μήνα είναι η ημέρα με αριθμό 1.
Επομένως, εάν καθοριστεί ημέρα με αριθμό 0,
τότε θα προκύψει η τελευταία ημέρα του προηγούμενου μήνα:
let date = new Date(2018, 1, 0); // καθορίζουμε την μηδενική ημέρα
console.log(date); // θα προκύψει 31 Ιανουαρίου
Μπορούν επίσης να καθοριστούν αρνητικές τιμές
ημερών και μηνών. Σε αυτήν την περίπτωση, πρέπει να θυμάστε ότι
η ελάχιστη ημέρα έχει αριθμό 1, και
ο ελάχιστος μήνας - αριθμό 0. Αυτό σημαίνει
ότι η μείον πρώτη ημέρα πέφτει στην 2
ημέρα από το τέλος του προηγούμενου μήνα, ενώ ο μείον
πρώτος μήνας πέφτει απλώς στον τελευταίο
μήνα του προηγούμενου έτους:
let date = new Date(2018, 1, -1); // καθορίζουμε -1 ημέρα
console.log(date); // θα προκύψει 30 Ιανουαρίου
let date = new Date(2018, -1, 1); // καθορίζουμε -1 μήνα
console.log(date); // θα προκύψει 1 Δεκεμβρίου 2017
Όλα όσα ειπώθηκαν παραπάνω λειτουργούν ανάλογα και με ώρες, λεπτά και δευτερόλεπτα:
let date = new Date(2018, 0, 1, 24, 0, 0); // καθορίζουμε την 24η ώρα
console.log(date); // θα προκύψει 2 Ιανουαρίου, 0 ώρες
let date = new Date(2018, 0, 1, 25, 0, 0); // καθορίζουμε την 25η ώρα
console.log(date); // θα προκύψει 2 Ιανουαρίου, 1 ώρα
Προσδιορίστε σε ποια ημερομηνία το JavaScript θα μετατρέψει την ακόλουθη χρονική στιγμή:
let date = new Date(2018, 1, 35);
console.log(date); // ποια ημερομηνία θα είναι;
Προσδιορίστε σε ποια ημερομηνία το JavaScript θα μετατρέψει την ακόλουθη χρονική στιγμή:
let date = new Date(2018, 15, 1);
console.log(date); // ποια ημερομηνία θα είναι;
Προσδιορίστε σε ποια ημερομηνία το JavaScript θα μετατρέψει την ακόλουθη χρονική στιγμή:
let date = new Date(2018, 3, 31);
console.log(date); // ποια ημερομηνία θα είναι;
Προσδιορίστε σε ποια ημερομηνία το JavaScript θα μετατρέψει την ακόλουθη χρονική στιγμή:
let date = new Date(2018, 1, 31);
console.log(date); // ποια ημερομηνία θα είναι;
Προσδιορίστε σε ποια ημερομηνία το JavaScript θα μετατρέψει την ακόλουθη χρονική στιγμή:
let date = new Date(2018, 12, 33);
console.log(date); // ποια ημερομηνία θα είναι;
Προσδιορίστε σε ποια ημερομηνία το JavaScript θα μετατρέψει την ακόλουθη χρονική στιγμή:
let date = new Date(2018, 33, 33);
console.log(date); // ποια ημερομηνία θα είναι;
Προσδιορίστε σε ποια ημερομηνία το JavaScript θα μετατρέψει την ακόλουθη χρονική στιγμή:
let date = new Date(2018, 5, 0);
console.log(date); // ποια ημερομηνία θα είναι;
Προσδιορίστε σε ποια ημερομηνία το JavaScript θα μετατρέψει την ακόλουθη χρονική στιγμή:
let date = new Date(2018, 0, 0);
console.log(date); // ποια ημερομηνία θα είναι;
Προσδιορίστε σε ποια ημερομηνία το JavaScript θα μετατρέψει την ακόλουθη χρονική στιγμή:
let date = new Date(2018, -12, -33);
console.log(date); // ποια ημερομηνία θα είναι;
Προσδιορίστε σε ποια ημερομηνία το JavaScript θα μετατρέψει την ακόλουθη χρονική στιγμή:
let date = new Date(2018, 0, 1, 23, 0, 60);
console.log(date); // ποια ημερομηνία θα είναι;
Προσδιορίστε σε ποια ημερομηνία το JavaScript θα μετατρέψει την ακόλουθη χρονική στιγμή:
let date = new Date(2018, 0, 1, 23, 60, 0);
console.log(date); // ποια ημερομηνία θα είναι;
Προσδιορίστε σε ποια ημερομηνία το JavaScript θα μετατρέψει την ακόλουθη χρονική στιγμή:
let date = new Date(2018, 0, 1, 100, 100, 100);
console.log(date); // ποια ημερομηνία θα είναι;