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

WD8: DateVersChaine() vs Date système

10 réponses
Avatar
Real Phil
Salut,

Dans un champ de saisie date on peut choisir le format "Date Système" pour
que le format corresponde au réglage de l'usager.
Mais quand on utilise DateVersChaine() pour afficher une date dans un
libellé comment on fait pour indiquer qu'on veut utiliser le format Date
Système ?

Réal Phil

10 réponses

Avatar
mat
Real Phil wrote:
Salut,

Dans un champ de saisie date on peut choisir le format "Date Système" pour
que le format corresponde au réglage de l'usager.
Mais quand on utilise DateVersChaine() pour afficher une date dans un
libellé comment on fait pour indiquer qu'on veut utiliser le format Date
Système ?

Réal Phil





Bonjour Réal,

WD10 n'a toujours pas de fonction adéquate. La valeur par défaut est
JJ/MM/AAAA, aussi pour la version anglaise de Windev (appelé version
"US"). Ce n'est pas un problème majeur quand on n'a pas de clients aux
Etats-Unis (MM/JJ/AAAA) ou dans certains pays d'Asie (AAAA/MM/JJ)...

En principe il est possible d'obtenir le format via l'API GetDateFormat:

http://msdn.microsoft.com/library/default.asp?url=/library/en-us/intl/nls_5w6s.asp

Exemple d'utilisation de Microsoft:
http://www.microsoft.com/globaldev/getWR/steps/wrg_date.mspx

Pour l'instant je n'ai pas le temps de m'en occuper, mais j'aimerais
bien savoir comment récupérer le format de la date système sous Windev
en utilisant cet API. Peut-être toi ou quelqu'un d'autre peut nous
donner la réponse?

Autrement, je pense tu n'aura pas d'autre choix que d'intégrer le format
dans ta configuration utilisateur.

Salutations
Mat
Avatar
Pascal F
mat a exprimé avec précision :
Real Phil wrote:
Salut,

Dans un champ de saisie date on peut choisir le format "Date Système" pour
que le format corresponde au réglage de l'usager.
Mais quand on utilise DateVersChaine() pour afficher une date dans un
libellé comment on fait pour indiquer qu'on veut utiliser le format Date
Système ?

Réal Phil





Bonjour Réal,

WD10 n'a toujours pas de fonction adéquate. La valeur par défaut est JJ/MM/AAAA, aussi pour la version anglaise de Windev
(appelé version "US"). Ce n'est pas un problème majeur quand on n'a pas de clients aux Etats-Unis (MM/JJ/AAAA) ou dans certains
pays d'Asie (AAAA/MM/JJ)...

En principe il est possible d'obtenir le format via l'API GetDateFormat:

http://msdn.microsoft.com/library/default.asp?url=/library/en-us/intl/nls_5w6s.asp

Exemple d'utilisation de Microsoft: http://www.microsoft.com/globaldev/getWR/steps/wrg_date.mspx

Pour l'instant je n'ai pas le temps de m'en occuper, mais j'aimerais bien savoir comment récupérer le format de la date système
sous Windev en utilisant cet API. Peut-être toi ou quelqu'un d'autre peut nous donner la réponse?

Autrement, je pense tu n'aura pas d'autre choix que d'intégrer le format dans ta configuration utilisateur.

Salutations
Mat



Je pense qu'il doit être possible en donnant la masque à la fonction DateVersChaine. Le dit masque étant dans un message
multilangue. Il est alors facile de donner le format voulu. Ou en utilisant le paramétrage du projet qui permet de définir des
masques en fonction des langues.

Autre moyen de connaitre le format régional de date courte:

LOCALE_SSHORTDATE est un entier = 0x1f // Format Date courte
Local_DateCourte est une chaîne ASCIIZ sur 20="" //= Chaine de formatage de date coute
eLocal est un entier système
cchData est un entier = 20// Type C :int
RetourFonct est un entier système //sans signe // Type C :UINT

// Renvoie la chaine de formatage de date courte
// Précisez les cas particuliers et les limites.
//
PROCEDURE PRIVÉ GetLocalInfo()

RENVOYER API("KERNEL32","GetLocaleInfoA",:eLocal,:LOCALE_SSHORTDATE,&:Local_DateCourte,:cchData)

--
Pascal

Ne garder que le prénom pour me joindre
Avatar
Pascal F
Pascal F a pensé très fort :
mat a exprimé avec précision :
Real Phil wrote:
Salut,

Dans un champ de saisie date on peut choisir le format "Date Système" pour
que le format corresponde au réglage de l'usager.
Mais quand on utilise DateVersChaine() pour afficher une date dans un
libellé comment on fait pour indiquer qu'on veut utiliser le format Date
Système ?

Réal Phil





Bonjour Réal,

WD10 n'a toujours pas de fonction adéquate. La valeur par défaut est JJ/MM/AAAA, aussi pour la version anglaise de Windev
(appelé version "US"). Ce n'est pas un problème majeur quand on n'a pas de clients aux Etats-Unis (MM/JJ/AAAA) ou dans
certains pays d'Asie (AAAA/MM/JJ)...

En principe il est possible d'obtenir le format via l'API GetDateFormat:

http://msdn.microsoft.com/library/default.asp?url=/library/en-us/intl/nls_5w6s.asp

Exemple d'utilisation de Microsoft: http://www.microsoft.com/globaldev/getWR/steps/wrg_date.mspx

Pour l'instant je n'ai pas le temps de m'en occuper, mais j'aimerais bien savoir comment récupérer le format de la date
système sous Windev en utilisant cet API. Peut-être toi ou quelqu'un d'autre peut nous donner la réponse?

Autrement, je pense tu n'aura pas d'autre choix que d'intégrer le format dans ta configuration utilisateur.

Salutations
Mat



Je pense qu'il doit être possible en donnant la masque à la fonction DateVersChaine. Le dit masque étant dans un message
multilangue. Il est alors facile de donner le format voulu. Ou en utilisant le paramétrage du projet qui permet de définir des
masques en fonction des langues.

Autre moyen de connaitre le format régional de date courte:

LOCALE_SSHORTDATE est un entier = 0x1f // Format Date courte
Local_DateCourte est une chaîne ASCIIZ sur 20="" //= Chaine de formatage de date coute
eLocal est un entier système
cchData est un entier = 20// Type C :int
RetourFonct est un entier système //sans signe // Type C :UINT

// Renvoie la chaine de formatage de date courte
// Précisez les cas particuliers et les limites.
//
PROCEDURE PRIVÉ GetLocalInfo()

RENVOYER API("KERNEL32","GetLocaleInfoA",:eLocal,:LOCALE_SSHORTDATE,&:Local_DateCourte,:cchData)



Oups j'ai oublié de préciser que le format de la date est récupérer dans le membre de ma classe :Local_DateCourte.

--
Pascal

Ne garder que le prénom pour me joindre
Avatar
mat
Merci beaucoup pour cette info.


Pascal F wrote:
..

Je pense qu'il doit être possible en donnant la masque à la fonction
DateVersChaine. Le dit masque étant dans un message multilangue. Il
est alors facile de donner le format voulu. Ou en utilisant le
paramétrage du projet qui permet de définir des masques en fonction
des langues.






oui, mais c'est alors mon choix, pas celui de l'utilisateur qui l'a déjà
réglé dans Windows.




Autre moyen de connaitre le format régional de date courte:

LOCALE_SSHORTDATE est un entier = 0x1f // Format Date courte
Local_DateCourte est une chaîne ASCIIZ sur 20="" //= Chaine de
formatage de date coute
eLocal est un entier système
cchData est un entier = 20// Type C :int
RetourFonct est un entier système //sans signe // Type C :UINT

// Renvoie la chaine de formatage de date courte
// Précisez les cas particuliers et les limites.
//
PROCEDURE PRIVÉ GetLocalInfo()

RENVOYER
API("KERNEL32","GetLocaleInfoA",:eLocal,:LOCALE_SSHORTDATE,&:Local_DateCourte,:cchData)




Oups j'ai oublié de préciser que le format de la date est récupérer dans
le membre de ma classe :Local_DateCourte.





donc, si je comprends bien, il faudra quand-même l'API GetDateFormat
afin de récupérer le format de la date courte défini sous Windows?
Je n'ai pas beaucoup d'expérience avec les API et vue que tu as déjà
GetLocalInfo, tu pourrais nous montrer comment définir les variables
nécessaires pour faire fonctionner GetDateFormat?

Merci.

Mat
Avatar
Pascal F
mat a formulé ce vendredi :
Merci beaucoup pour cette info.


donc, si je comprends bien, il faudra quand-même l'API GetDateFormat afin de récupérer le format de la date courte défini sous
Windows?
Je n'ai pas beaucoup d'expérience avec les API et vue que tu as déjà GetLocalInfo, tu pourrais nous montrer comment définir les
variables nécessaires pour faire fonctionner GetDateFormat?

Merci.

Mat



Non pas besoin d'autre API mais j'ai oublié une ligne de code quiest dans le constructeur de ma classe:
:eLocal=API("KERNEL32","GetUserDefaultLCID")

en fait pour récupérer dans une fonction le format de date courte des paramètres régionaux, voici le code:
PROCEDURE Donne_Format_Date()

LOCALE_SSHORTDATE est un entier = 0x1f // Format Date courte
Local_DateCourte est une chaîne ASCIIZ sur 20="" //= Chaine de formatage de date coute
eLocal est un entier
cchData est un entier = 20// Type C :int

eLocal=API("KERNEL32","GetUserDefaultLCID")

SI PAS API("KERNEL32","GetLocaleInfoA",eLocal,LOCALE_SSHORTDATE,&Local_DateCourte,cchData) ALORS
RENVOYER ""
FIN
RENVOYER Local_DateCourte

la chaine de formatage est récupérer par Trace(Donne_Format_Date())
Différents paramètres régionaux sont récupérable par la même fonction. Voici les constantes à utiliser en lieu et place de
LOCAL_SSHORTDATE

CONSTANTE
ABM_GETSTATE=4//0x00000004
ABM_GETTASKBARPOS=5//0x00000005
ABM_SETSTATE=0x0a
ABM_SETPOS=3//0x00000003
ABM_SETAUTOHIDEBAR=8//0x00000008
LOCALE_ICURRENCY' //0x0000001B
LOCALE_ICURRDIGITS%//0x00000019
LOCALE_SCURRENCY //0x00000014
LOCALE_SMONDECIMALSEP"//0x00000016
LOCALE_SMONGROUPING$//0x00000018
LOCALE_SMONTHOUSANDSEP#//0x00000017
FIN
les constantes commençant par ABM concernent la barre de tache de windows. Exemple d'utilisation pour récupérer les paramètres
monétaires:
PROCEDURE Recup_Param_Monetaire()
API("KERNEL32","GetLocaleInfoA",:eLocal,::LOCALE_SCURRENCY,&:Local_DateCourte,:cchData) // symbole monétaire
stMone.gcCURRENCY=:Local_DateCourte
API("KERNEL32","GetLocaleInfoA",:eLocal,::LOCALE_ICURRENCY,&:Local_DateCourte,:cchData) //
stMone.geCURRENCY=Val(:Local_DateCourte)
API("KERNEL32","GetLocaleInfoA",:eLocal,::LOCALE_ICURRDIGITS,&:Local_DateCourte,:cchData) // nombre de décimales des
monétaires
stMone.geCURRDIGITS=:Local_DateCourte
API("KERNEL32","GetLocaleInfoA",:eLocal,::LOCALE_SMONDECIMALSEP,&:Local_DateCourte,:cchData) // séparateur décimal des
monétaires
stMone.gcMONDECIMALSEP=:Local_DateCourte
API("KERNEL32","GetLocaleInfoA",:eLocal,::LOCALE_SMONTHOUSANDSEP,&:Local_DateCourte,:cchData) // séparateur des milliers
stMone.gcMONGROUPING=:Local_DateCourte

--
Pascal

Ne garder que le prénom pour me joindre
Avatar
mat
Pascal F wrote:

Non pas besoin d'autre API mais j'ai oublié une ligne de code quiest
dans le constructeur de ma classe:
:eLocal=API("KERNEL32","GetUserDefaultLCID")

en fait pour récupérer dans une fonction le format de date courte des
paramètres régionaux, voici le code:
PROCEDURE Donne_Format_Date()

LOCALE_SSHORTDATE est un entier = 0x1f // Format Date courte
Local_DateCourte est une chaîne ASCIIZ sur 20="" //= Chaine de formatage
de date coute
eLocal est un entier
cchData est un entier = 20// Type C :int

eLocal=API("KERNEL32","GetUserDefaultLCID")

SI PAS
API("KERNEL32","GetLocaleInfoA",eLocal,LOCALE_SSHORTDATE,&Local_DateCourte,cchData)
ALORS
RENVOYER ""
FIN
RENVOYER Local_DateCourte

la chaine de formatage est récupérer par Trace(Donne_Format_Date())
Différents paramètres régionaux sont récupérable par la même fonction.
Voici les constantes à utiliser en lieu et place de LOCAL_SSHORTDATE

CONSTANTE
ABM_GETSTATE=4//0x00000004
ABM_GETTASKBARPOS=5//0x00000005
ABM_SETSTATE=0x0a
ABM_SETPOS=3//0x00000003
ABM_SETAUTOHIDEBAR=8//0x00000008
LOCALE_ICURRENCY' //0x0000001B
LOCALE_ICURRDIGITS%//0x00000019
LOCALE_SCURRENCY //0x00000014
LOCALE_SMONDECIMALSEP"//0x00000016
LOCALE_SMONGROUPING$//0x00000018
LOCALE_SMONTHOUSANDSEP#//0x00000017
FIN
les constantes commençant par ABM concernent la barre de tache de
windows. Exemple d'utilisation pour récupérer les paramètres monétaires:
PROCEDURE Recup_Param_Monetaire()
API("KERNEL32","GetLocaleInfoA",:eLocal,::LOCALE_SCURRENCY,&:Local_DateCourte,:cchData)
// symbole monétaire
stMone.gcCURRENCY=:Local_DateCourte
API("KERNEL32","GetLocaleInfoA",:eLocal,::LOCALE_ICURRENCY,&:Local_DateCourte,:cchData)
//
stMone.geCURRENCY=Val(:Local_DateCourte)
API("KERNEL32","GetLocaleInfoA",:eLocal,::LOCALE_ICURRDIGITS,&:Local_DateCourte,:cchData)
// nombre de décimales des monétaires
stMone.geCURRDIGITS=:Local_DateCourte
API("KERNEL32","GetLocaleInfoA",:eLocal,::LOCALE_SMONDECIMALSEP,&:Local_DateCourte,:cchData)
// séparateur décimal des monétaires
stMone.gcMONDECIMALSEP=:Local_DateCourte
API("KERNEL32","GetLocaleInfoA",:eLocal,::LOCALE_SMONTHOUSANDSEP,&:Local_DateCourte,:cchData)
// séparateur des milliers
stMone.gcMONGROUPING=:Local_DateCourte





super, merci mille fois.

Mat
Avatar
Réal Phil
> Bonjour Réal,

WD10 n'a toujours pas de fonction adéquate. La valeur par défaut est
JJ/MM/AAAA, aussi pour la version anglaise de Windev (appelé version
"US"). Ce n'est pas un problème majeur quand on n'a pas de clients aux
Etats-Unis (MM/JJ/AAAA) ou dans certains pays d'Asie (AAAA/MM/JJ)...

En principe il est possible d'obtenir le format via l'API GetDateFormat:

http://msdn.microsoft.com/library/default.asp?url=/library/en-us/intl...

Exemple d'utilisation de Microsoft:http://www.microsoft.com/globaldev/get WR/steps/wrg_date.mspx

Pour l'instant je n'ai pas le temps de m'en occuper, mais j'aimerais
bien savoir comment récupérer le format de la date système sous Win dev
en utilisant cet API. Peut-être toi ou quelqu'un d'autre peut nous
donner la réponse?

Autrement, je pense tu n'aura pas d'autre choix que d'intégrer le format
dans ta configuration utilisateur.

Salutations
Mat



Bonjour Mat,

Dès que j'en ai la chance je vais tester la solution de Pascal.

Je suis très surpris de constater que WD n'a pas de solution simple
pour le format des dates.
J'en suis d'autant plus surpris que nous avions cette fonction il y a
14 ans, en Foxpro DOS.
SET DATE donne un choix de 10 formats de dates et change
instantanément tous les formats de dates en affichage et en saisie
dans tout le projet... et indépendamment de la langue - ce qui était
un gros plus dans mon cas.

Réal Phil
Avatar
Réal Phil
Merci beaucoup Pascal, c'est très apprécié.

Réal Phil
Avatar
//
Merci pour ces informations!

Après les dates, les heures :-)

Tu n'aurais pas une idée, en stock, pour connaitre le décalage GMT du
poste en cours?
Avatar
Pascal F
// avait soumis l'idée :
Merci pour ces informations!

Après les dates, les heures :-)

Tu n'aurais pas une idée, en stock, pour connaitre le décalage GMT du poste en cours?



Désolé pas d'idée.

--
Pascal

Ne garder que le prénom pour me joindre