Correction automatique des dates en JavaScript

JavaScript a une fonctionnalité très intéressante et utile : si un moment incorrect a été spécifié lors de la création de l'objet Date, il sera automatiquement recalculé en un moment correct. Regardons un exemple.

Comme vous le savez, la date du 35 janvier n'existe pas. Le jour maximum possible en janvier est le 31. Il s'avère que notre date du 35 janvier a 4 jours en trop. JavaScript dans un tel cas ajoutera simplement ces 4 jours excédentaires au mois suivant :

javascriptlet date = new Date(2018, 0, 35);
console.log(date); // donnera le 4 février

Il est possible de spécifier non seulement des jours excédentaires, mais aussi des mois. Il faut cependant se rappeler que les mois commencent à zéro, ce qui signifie que le dernier mois correct est le 11. Si vous spécifiez le 12ème mois, vous obtiendrez le janvier de l'année suivante :

javascriptlet date = new Date(2018, 12, 1); // on spécifie le 12ème mois
console.log(date); // donnera le 1 janvier 2019

La correction décrite fonctionne également dans le sens descendant. Comme vous le savez, le jour le plus bas d'un mois est le jour numéro 1. Par conséquent, si vous spécifiez le jour numéro 0, vous obtiendrez le dernier jour du mois précédent :

javascriptlet date = new Date(2018, 1, 0); // on spécifie le jour zéro
console.log(date); // donnera le 31 janvier

Il est également possible de spécifier des valeurs négatives pour les jours et les mois. Il faut dans ce cas se rappeler que le jour minimum a le numéro 1, et le mois minimum a le numéro 0. Cela signifie que le jour moins un correspondra au 2ème jour en partant de la fin du mois précédent, et le mois moins un correspondra simplement au dernier mois de l'année précédente :

javascriptlet date = new Date(2018, 1, -1); // on spécifie -1 jour
console.log(date); // donnera le 30 janvier
javascriptlet date = new Date(2018, -1, 1); // on spécifie -1 mois
console.log(date); // donnera le 1 décembre 2017

Tout ce qui a été dit ci-dessus fonctionne de manière analogue avec les heures, les minutes et les secondes :

javascriptlet date = new Date(2018, 0, 1, 24, 0, 0); // on spécifie la 24ème heure
console.log(date); // donnera le 2 janvier, 0 heure
javascriptlet date = new Date(2018, 0, 1, 25, 0, 0); // on spécifie la 25ème heure
console.log(date); // donnera le 2 janvier, 1 heure
Задание 1

Déterminez à quelle date JavaScript transformera le moment suivant :

javascriptlet date = new Date(2018, 1, 35);
console.log(date); // quelle sera la date ?
Задание 2

Déterminez à quelle date JavaScript transformera le moment suivant :

javascriptlet date = new Date(2018, 15, 1);
console.log(date); // quelle sera la date ?
Задание 3

Déterminez à quelle date JavaScript transformera le moment suivant :

javascriptlet date = new Date(2018, 3, 31);
console.log(date); // quelle sera la date ?
Задание 4

Déterminez à quelle date JavaScript transformera le moment suivant :

javascriptlet date = new Date(2018, 1, 31);
console.log(date); // quelle sera la date ?
Задание 5

Déterminez à quelle date JavaScript transformera le moment suivant :

javascriptlet date = new Date(2018, 12, 33);
console.log(date); // quelle sera la date ?
Задание 6

Déterminez à quelle date JavaScript transformera le moment suivant :

javascriptlet date = new Date(2018, 33, 33);
console.log(date); // quelle sera la date ?
Задание 7

Déterminez à quelle date JavaScript transformera le moment suivant :

javascriptlet date = new Date(2018, 5, 0);
console.log(date); // quelle sera la date ?
Задание 8

Déterminez à quelle date JavaScript transformera le moment suivant :

javascriptlet date = new Date(2018, 0, 0);
console.log(date); // quelle sera la date ?
Задание 9

Déterminez à quelle date JavaScript transformera le moment suivant :

javascriptlet date = new Date(2018, -12, -33);
console.log(date); // quelle sera la date ?
Задание 10

Déterminez à quelle date JavaScript transformera le moment suivant :

javascriptlet date = new Date(2018, 0, 1, 23, 0, 60);
console.log(date); // quelle sera la date ?
Задание 11

Déterminez à quelle date JavaScript transformera le moment suivant :

javascriptlet date = new Date(2018, 0, 1, 23, 60, 0);
console.log(date); // quelle sera la date ?
Задание 12

Déterminez à quelle date JavaScript transformera le moment suivant :

javascriptlet date = new Date(2018, 0, 1, 100, 100, 100);
console.log(date); // quelle sera la date ?