Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Initialisation de la date

6 réponses
Avatar
Gloops
Bonjour tout le monde,

Pour initialiser une date, on peut taper
var Dt = new Date()

auquel cas on a la date (et l'heure) au moment de l'initialisation, mais
on peut aussi taper

var Dt = new Date("13/02/2016")

auquel cas on aura la date telle que passée en paramètre.

Sur une machine, j'ai cette date interprétée au format dd/MM/yyyy, sur
une autre elle est interprétée au format MM/dd/yyyy.

De quoi est-ce que ça dépend, y a-t-il quelque chose à régler dans le
panneau de configuration ?

6 réponses

Avatar
Olivier Miakinen
Bonjour,

Le 13/02/2016 17:59, Gloops a écrit :

Pour initialiser une date, on peut taper [...]

var Dt = new Date("13/02/2016")

auquel cas on aura la date telle que passée en paramètre.

Sur une machine, j'ai cette date interprétée au format dd/MM/yyyy, sur
une autre elle est interprétée au format MM/dd/yyyy.

De quoi est-ce que ça dépend, y a-t-il quelque chose à régler dans le
panneau de configuration ?



D'après la norme ECMAScript, la date sera interprétée sans ambigüité
si elle respecte le format ISO 8601, c'est-à-dire YYYY-MM-DD si tu ne
précises pas l'heure, YYYY-MM-DDTHH:mm:ss.sssZ pour le format complet.
Voir <http://www.ecma-international.org/ecma-262/5.1/#sec-15.9.1.15&gt;
pour tous les formats possibles.

Selon <http://www.ecma-international.org/ecma-262/5.1/#sec-15.9.4.2&gt;,
si tu donnes un autre format (en l'occurrence DD/MM/YYYY ou MM/MM/YYYY),
le résultat dépendra de choix d'implémentation spécifiques.

Donc, si tu ne veux pas être tributaire d'implémentations spécifiques,
tu devrais écrire :
var Dt = new Date("2016-02-13");
ou bien :
var Dt = new Date(2016, 2, 13);

Cela dit, je suis à peu près convaincu que ça fonctionnera aussi en
écrivant :
var Dt = new Date("2016/02/13");
... mais si tu veux faire les choses proprement il vaut mieux des traits
d'union.

Cordialement,
--
Olivier Miakinen
Avatar
Gloops
Le 13/02/2016 18:32, Olivier Miakinen a écrit :
Bonjour,

Le 13/02/2016 17:59, Gloops a écrit :

Pour initialiser une date, on peut taper [...]

var Dt = new Date("13/02/2016")

auquel cas on aura la date telle que passée en paramètre.

Sur une machine, j'ai cette date interprétée au format dd/MM/yyyy, sur
une autre elle est interprétée au format MM/dd/yyyy.

De quoi est-ce que ça dépend, y a-t-il quelque chose à régler dans le
panneau de configuration ?



D'après la norme ECMAScript, la date sera interprétée sans ambigüité
si elle respecte le format ISO 8601, c'est-à-dire YYYY-MM-DD si tu ne
précises pas l'heure, YYYY-MM-DDTHH:mm:ss.sssZ pour le format complet.
Voir <http://www.ecma-international.org/ecma-262/5.1/#sec-15.9.1.15&gt;
pour tous les formats possibles.

Selon <http://www.ecma-international.org/ecma-262/5.1/#sec-15.9.4.2&gt;,
si tu donnes un autre format (en l'occurrence DD/MM/YYYY ou MM/MM/YYYY),
le résultat dépendra de choix d'implémentation spécifiques.

Donc, si tu ne veux pas être tributaire d'implémentations spécifiques,
tu devrais écrire :
var Dt = new Date("2016-02-13");
ou bien :
var Dt = new Date(2016, 2, 13);

Cela dit, je suis à peu près convaincu que ça fonctionnera aussi en
écrivant :
var Dt = new Date("2016/02/13");
... mais si tu veux faire les choses proprement il vaut mieux des traits
d'union.

Cordialement,




Ah, OK. J'avais bien pensé à Windows, en fait c'est plutôt son WScript
ou CScript qui est en cause.

Effectivement ça ne coûte pas cher de mettre année mois jour. C'est bien
comme ça que ça avait fini sous Access d'ailleurs, avec une fonction dédiée.

La première des syntaxes que tu cites suit le même principe, j'avais mis
ça dans mon script pour initialiser la variable, et puis ensuite il
s'agit de la lire dans un fichier de config donc la deuxième syntaxe
sera plus adaptée.

Merci.
Avatar
Une Bévue
Le 13/02/2016 18:32, Olivier Miakinen a écrit :
D'après la norme ECMAScript, la date sera interprétée sans ambigüité
si elle respecte le format ISO 8601, c'est-à-dire YYYY-MM-DD si tu ne
précises pas l'heure, YYYY-MM-DDTHH:mm:ss.sssZ pour le format complet.
Voir<http://www.ecma-international.org/ecma-262/5.1/#sec-15.9.1.15&gt;
pour tous les formats possibles.



et ce formt iso est ok aussi pour MySQL ?
moi j'ai pris :
"YYY-MM-DD hh:mm:ss"
donc sans "T" ni "Z"
Avatar
Olivier Miakinen
Le 14/02/2016 06:46, Une Bévue a écrit :

D'après la norme ECMAScript, la date sera interprétée sans ambigüité
si elle respecte le format ISO 8601, c'est-à-dire YYYY-MM-DD si tu ne
précises pas l'heure, YYYY-MM-DDTHH:mm:ss.sssZ pour le format complet.
Voir<http://www.ecma-international.org/ecma-262/5.1/#sec-15.9.1.15&gt;
pour tous les formats possibles.



et ce formt iso est ok aussi pour MySQL ?



Je pense qu'il vaut mieux poser la question aux experts des bases de
données, dont je ne suis pas. Du coup je fais suivre vers le groupe
fr.comp.applications.sgbd

Cela dit, faisant une recherche avec « date MySQL » sur la toile, je
suis tombé là-dessus en deux clics :
https://dev.mysql.com/doc/refman/5.5/en/date-and-time-types.html

Un clic de plus et j'avais ça :
https://dev.mysql.com/doc/refman/5.5/en/date-and-time-literals.html

Je suppose que ça répond à ta question.
Avatar
Une Bévue
Le 14/02/2016 10:15, Olivier Miakinen a écrit :
Je pense qu'il vaut mieux poser la question aux experts des bases de
données, dont je ne suis pas. Du coup je fais suivre vers le groupe
fr.comp.applications.sgbd

Cela dit, faisant une recherche avec « date MySQL » sur la toile, je
suis tombé là-dessus en deux clics :
https://dev.mysql.com/doc/refman/5.5/en/date-and-time-types.html

Un clic de plus et j'avais ça :
https://dev.mysql.com/doc/refman/5.5/en/date-and-time-literals.html

Je suppose que ça répond à ta question.


oui, oui, merci, c'est bien ce que j'avais lu.
j'avais un doute car MongoDB exige le format iso.
là c'est autre chose c'est bien YYY-MM-DD HH:mm:ss

bon.
Avatar
Gérald Niel
(suivi sur fr.comp.applications.sgbd)

Le Dimanche 14 février 2016 à 05:46 UTC, Une Bévue écrivait sur
fr.comp.lang.javascript :

et ce formt iso est ok aussi pour MySQL ?
moi j'ai pris :
"YYYY-MM-DD hh:mm:ss"


^^^^ manquait un Y

Format valide pour MySQL ou MariaDB pour les champs de type 'DATE'.
C'est aussi le format à utiliser pour sqllite (champs de type 'TEXT').

@+
--
On ne le dira jamais assez, l'anarchisme, c'est l'ordre sans le
gouvernement ; c'est la paix sans la violence. C'est le contraire
précisément de tout ce qu'on lui reproche, soit par ignorance, soit
par mauvaise foi. -+- Hem Day -+-