Problème de date  (Lu 123 fois) Partager ce sujet Imprimer

1 B


xarko  14 novembre 2020 : 10:24

Bonjour à tous,encore une fois je me tourne vers vous pour essayer de résoudre un problème.

Je dispose d'un formulaire dans lequel il y a une zone pour le choix d'une date (champ DateSie en format date du type dd/mm/yyyy).
Ce que je veux c'est récupérer chacun des 3 critères entrés : le jour, le mois et l'année.
Donc j'ai mon bout de script (pardon pour les puristes) :
date1=new Date(this.getField("DateSie").value);
// ici est affecté à date1 la date entrée dans le champ DateSie
jour=date1.getDate();
mois=date1.getMonth();

Alors le problème est que quelque soit le format de date réglé dans les propriétés du champ DateSie, date1 sera toujours interprété en format américain (je crois) : yyyymmdd.
Dans mon exemple si l'utilisateur entre dans DateSie la date 06/12/2020 (car j'ai mis un format DateSie du genre dd/mm/yyyy pour dire 6 décembre 2020, à la française quoi...), en sortie j'aurais jour=12 et mois=6 car lui croit que l'utilisateur a rentré 12 juin 2020.

Peut-être que dans bout de script je dois formater ma variable date1 en quelque chose pour lui faire comprendre que la date est entrée à la "française" et non pas à "l'américaine" ?
Pardon pour les imprécisions, j'ai fait de mon mieux !
Je vous remercie par avance.
Stéphane

IP archivée


Merlin  14 novembre 2020 : 11:46

Bonjour

Citer
date1 sera toujours interprété en format américain (je crois) : yyyymmdd
Ça c'est le format ISO (international), les anglo-saxons utilisent : mm/dd/yyyy

Sinon, j'ai compris la question mais il est très difficile d'y répondre efficacement sans voir les champs et tous les scripts.
Peux tu partager ton document, ou un exemple ?

IP archivée


xarko  14 novembre 2020 : 12:04

Bonjour Merlin et encore une fois merci pour ta réponse.

Je te joins un fichier avec 3 zones : la zone de saisie de la date à gauche formatée en dd/mm/yyyy (et je veux qu'elle reste comme ça).
Sur la droite 2 autres zones : celle du haut devrait récupérer le jour (la fomule getDate est utilisée) et celle du bas le mois (formule GetMonth).
Quoique je fasse dans la zone GetDate je récupère le mois et dans la zone GetMonth je récupère le jour.
Sauf si je change le format de ma date de saisie et que je le passe en format américain (ce que je ne veux pas) il y aura ce problème.
Je te remercie.
Stéphane

IP archivée


bebarth  14 novembre 2020 : 15:18

bonjour,
Ici, il faut convertir le résultat de ton champ en chaine de caractères, puis il y a 2 solutions.
Comme tu as un format de date avec dd et mm, on sait que les jours et mois sont toujours indiqués avec 2 caractères. Il suffit donc de prendre les caractères 0 et 1 pour le jour et 3 et 4 pour le mois.
Si tu avais un format de date avec d ou m, les jours et mois pourraient avoir 1 ou 2 caractères, il faudrait mieux convertir la chaine de caractères en table en coupant à chaque barre oblique. L'élément 0 de la table serait donc le jour, l'élément 1 le mois (et l'élément 2 l'année).
Voici un fichier en pièce jointe avec les 2 possibilités en script de champ désactivé.
@+
 :bonjour:

IP archivée


Merlin  14 novembre 2020 : 16:59

J'ai passé du temps à essayer de comprendre, parce-que normalement, d'après la doc* getMonth (et getDay aussi) utilise le format de date local (celui de l'ordinateur), et on dirait bien que dans ce cas il n'utilise que le format anglo-saxon.
Soit j'ai raté un truc, soit Acrobat l'ignore.  :doute:

* Je cite : The getMonth() method returns the month (from 0 to 11) for the specified date, according to local time.

IP archivée


xarko  14 novembre 2020 : 16:59

Bonjour Bebarth,je te remercie également pour ta réponse. c'est impeccable.
J'avais pensé à essayer "d'aplatir" la date en une chaîne de caractères pour pouvoir extraire ce que je voulais. Mais je suis totalement novice, j'avais donc laissé tomber.Un grand merci, je peux avancer.Bonne journée.

IP archivée


xarko  14 novembre 2020 : 17:02

Je vais utiliser la solution de Bebarth. Effectivement j'ai beau retourner le truc dans les sens, il reste bloqué sur ce format.en tout cas, je te remercie pour tes recherches.Bonne journée.

J'ai passé du temps à essayer de comprendre, parce-que normalement, d'après la doc* getMonth (et getDay aussi) utilise le format de date local (celui de l'ordinateur), et on dirait bien que dans ce cas il n'utilise que le format anglo-saxon.
Soit j'ai raté un truc, soit Acrobat l'ignore.  :doute:

* Je cite : The getMonth() method returns the month (from 0 to 11) for the specified date, according to local time.

IP archivée


bebarth  14 novembre 2020 : 18:37

Si tu veux absolument utiliser les méthodes "getMonth", etc., il faut alors utiliser également la méthode "util.scand" pour indiquer le format de date du champ d'origine.
Ci-joint un nouveau fichier avec les 3 méthodes.
@+
 :bonjour:

IP archivée


Merlin  14 novembre 2020 : 19:34

Si tu veux absolument utiliser les méthodes "getMonth", etc., il faut alors utiliser également la méthode "util.scand" pour indiquer le format de date du champ d'origine.
C'est ça que je cherchais, je me disais bien que j'avais raté quelque chose.
 :oh:   :mur:

IP archivée


xarko  15 novembre 2020 : 10:10

Bonjour Bebarth, effectivement je préfère même si tes solutions précédentes me convenaient parfaitement.Je garde précieusement le fichier que tu as envoyé.Encore merci!Bonne journée.


Si tu veux absolument utiliser les méthodes "getMonth", etc., il faut alors utiliser également la méthode "util.scand" pour indiquer le format de date du champ d'origine.
Ci-joint un nouveau fichier avec les 3 méthodes.
@+
 :bonjour:

IP archivée