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

Pourquoi le format des dates change ?

6 réponses
Avatar
JC
Bonjour,

A de nombreuses reprises le problème de format dd/mm/yy en mm/dd/yy a été abordé,
mais sans en avoir l'explication.

J'ai constaté que si l'on traite une date sans toucher à son format :
les deux premiers chiffres sont considérés comme des mois pour les valeurs 01 à
12 (format considéré dd/mm/yy)
puis comme des jours pour les valeurs de 13 à 31 (format considéré mm/dd/yy)

Ce qui fait que l'on ne sait jamais dans quel sens l'appli va traiter une date
passée en paramètre à moins de forcer le format à chaque fois.

Qqu'un a t il une explication concernant cette prise en compte des dates, alors
que mon appli à toujours bien fonctionné depuis des années sans avoir ce souci ?



Merci à tous,

6 réponses

Avatar
EPM
Bonjour
Le format par défaut est le format du système (paramètres régionaux) sur lequel le programme tourne
Si tu changes ces paramètres, la saisie peut devenir différente
Personnellement, pour saisir une date, je fais appel à un calendrier (ActiveX) ce qui facilite la saisie
Ou alors, tu dois partout dans tes formulaires définir le meme format ex : jj-mm-yyyy
Avatar
EPM
Re
Excuses, le format = dd-mm-yyyy
Avatar
Fabrice
Salut,

Un début de réponse: par défaut, les dates de style anglo-saxon sont du
genre mm/dd/yyyy alors que les date françaises sont du genre jj/mm/aaaa.

Dans VB pour access, les dates sont souvent traitées en mm/dd/yyyy ce
qui implique qu'il faut tout le temps, à mon avis, correctement formater
n'importe quelle date avant de s'en servir.

a+

f.


Le mieux

JC wrote:

Bonjour,

A de nombreuses reprises le problème de format dd/mm/yy en mm/dd/yy a
été abordé,
mais sans en avoir l'explication.

J'ai constaté que si l'on traite une date sans toucher à son format :
les deux premiers chiffres sont considérés comme des mois pour les
valeurs 01 à 12 (format considéré dd/mm/yy)
puis comme des jours pour les valeurs de 13 à 31 (format considéré
mm/dd/yy)

Ce qui fait que l'on ne sait jamais dans quel sens l'appli va traiter
une date passée en paramètre à moins de forcer le format à chaque fois.

Qqu'un a t il une explication concernant cette prise en compte des
dates, alors que mon appli à toujours bien fonctionné depuis des années
sans avoir ce souci ?



Merci à tous,



Avatar
Raymond [mvp]
Bonjour.
Les dates ne changent pas de format sauf que les français ont voulu
franciser les dates et là tout se gâte.
Pour résumer :

1 - les dates sont manipulées en vba, requêtes et autres objets avec des
variables:
tout est en format paramètres régionaux, on ne s'occupe de rien

2 - les dates sont manipulées par le vba en valeur littérale, encadrées par
un dièse :
les dates sont manipulés par le sql en valeur littérale, encadrées par
un dièse:
indiquer les dates sous la forme US: mm/dd/yyyy

3 - les dates sont manipulées par le générateur de requêtes, encadrées par
un dièse:
les dates sont manipulées par les macros, encadrées par un dièse:
les macros différent un petit peu du vba en ce qui concerne les dates. En
vba on indique la date #07/31/2003# entre dièse sous sa forme US. Clair !
dans une macro on indique la date sous sa forme des paramètres régionaux. En
France, Pour le 31/07/2003 on indiquera #31/07/2003#, si on indique
#07/31/2003# la date sera automatiquement rectifiée en #31/07/2003#. Pour se
résumer pour les macros, si la date est acceptable pour les paramètres
régionaux (style 05/07/2003) la valeur est acceptée telle quelle, sinon si
la valeur est acceptable sous la forme US, elle est acceptée et transformée
automatiquement sous sa forme paramètres régionaux, sinon erreur.
de même si la date est entrée sous la forme #2003/07/31# elle sera
transformée en #31/07/2003#.
Idem pour le générateur de requêtes.

Espérant avoir apporté quelque chose de plus.
--
@+
Raymond Access MVP
http://access.seneque.free.fr/
http://access.vba.free.fr/
http://access2003.free.fr/
http://users.skynet.be/mpfa/ pour débuter sur le forum


"JC" a écrit dans le message de
news:
Bonjour,

A de nombreuses reprises le problème de format dd/mm/yy en mm/dd/yy a été
abordé,

mais sans en avoir l'explication.

J'ai constaté que si l'on traite une date sans toucher à son format :
les deux premiers chiffres sont considérés comme des mois pour les valeurs
01 à

12 (format considéré dd/mm/yy)
puis comme des jours pour les valeurs de 13 à 31 (format considéré
mm/dd/yy)


Ce qui fait que l'on ne sait jamais dans quel sens l'appli va traiter une
date

passée en paramètre à moins de forcer le format à chaque fois.

Qqu'un a t il une explication concernant cette prise en compte des dates,
alors

que mon appli à toujours bien fonctionné depuis des années sans avoir ce
souci ?




Merci à tous,



Avatar
JC
Tout d'abord merci d'avoir pris le temps de développer ta réponse.

Je t'avoue que j'ai un peu de mal à saisir les nuances :
"
1 - les dates sont manipulées en vba ... tout est en format paramètres
régionaux, (JJ/MM/AAAA chez moi) on ne s'occupe de rien

ET

2 - les dates sont manipulées par le vba ... sous la forme US: mm/dd/yyyy
"

En prenant ton exemple très pertinent : 05/07/2003
comment cette date va être considérée en VBA, dans une requête, ... :
le 5 Juillet 2003 OU le 7 Mai 2003 ?

Et en fonction de cela comment faire pour qu'elle soit considérée comme le 5
Juillet 2003 ?


Merci encore,



Raymond [mvp] wrote:
Bonjour.
Les dates ne changent pas de format sauf que les français ont voulu
franciser les dates et là tout se gâte.
Pour résumer :

1 - les dates sont manipulées en vba, requêtes et autres objets avec des
variables:
tout est en format paramètres régionaux, on ne s'occupe de rien

2 - les dates sont manipulées par le vba en valeur littérale, encadrées par
un dièse :
les dates sont manipulés par le sql en valeur littérale, encadrées par
un dièse:
indiquer les dates sous la forme US: mm/dd/yyyy

3 - les dates sont manipulées par le générateur de requêtes, encadrées par
un dièse:
les dates sont manipulées par les macros, encadrées par un dièse:
les macros différent un petit peu du vba en ce qui concerne les dates. En
vba on indique la date #07/31/2003# entre dièse sous sa forme US. Clair !
dans une macro on indique la date sous sa forme des paramètres régionaux. En
France, Pour le 31/07/2003 on indiquera #31/07/2003#, si on indique
#07/31/2003# la date sera automatiquement rectifiée en #31/07/2003#. Pour se
résumer pour les macros, si la date est acceptable pour les paramètres
régionaux (style 05/07/2003) la valeur est acceptée telle quelle, sinon si
la valeur est acceptable sous la forme US, elle est acceptée et transformée
automatiquement sous sa forme paramètres régionaux, sinon erreur.
de même si la date est entrée sous la forme #2003/07/31# elle sera
transformée en #31/07/2003#.
Idem pour le générateur de requêtes.

Espérant avoir apporté quelque chose de plus.


Avatar
Raymond [mvp]
Bonjour.

pour le 05/07/2004 dans une requête ou une macro.

si donnée entrée sous vba: #05/07/2004# sera le 7 mai
si donnée entrée sous sql : #05/07/2004# sera le 7 mai
si donnée entrée sous création access graphique : #05/07/2004# sera le 5
juillet
ceci si les paramètres régionaux sont france.

pour envoyer le 5 juillet:
sous vba: #07/05/2004#
sous sql: #07/05/2004#
en création access graphique : #05/07/2004#
--
@+
Raymond Access MVP
http://access.seneque.free.fr/
http://access.vba.free.fr/
http://access2003.free.fr/
http://users.skynet.be/mpfa/ pour débuter sur le forum


"JC" a écrit dans le message de
news:
Tout d'abord merci d'avoir pris le temps de développer ta réponse.

Je t'avoue que j'ai un peu de mal à saisir les nuances :
"
1 - les dates sont manipulées en vba ... tout est en format paramètres
régionaux, (JJ/MM/AAAA chez moi) on ne s'occupe de rien

ET

2 - les dates sont manipulées par le vba ... sous la forme US: mm/dd/yyyy
"

En prenant ton exemple très pertinent : 05/07/2003
comment cette date va être considérée en VBA, dans une requête, ... :
le 5 Juillet 2003 OU le 7 Mai 2003 ?

Et en fonction de cela comment faire pour qu'elle soit considérée comme le
5

Juillet 2003 ?