changer une date de JJ/MM/AAAA à AAAA/MM/JJ
Règles du forum
- Merci de consulter la section "Règles du forum" et plus particulièrement "Règles et Mentions Légales du site autoitscript.fr" avant d'écrire un message.
changer une date de JJ/MM/AAAA à AAAA/MM/JJ
Bonjour à tous !
je ne parviens pas à trouver une fonction qui me permette de convertir une date de format JJ/MM/AAAA à AAAA/MM/JJ
je sais comment faire l'inverse avec la fonction _DateTimeFormat
mais dans le sens inverse aucune idée
Bonne journée à tous
je ne parviens pas à trouver une fonction qui me permette de convertir une date de format JJ/MM/AAAA à AAAA/MM/JJ
je sais comment faire l'inverse avec la fonction _DateTimeFormat
mais dans le sens inverse aucune idée
Bonne journée à tous
- Tlem
- Site Admin
- Messages : 11773
- Enregistré le : ven. 20 juil. 2007 21:00
- Localisation : Bordeaux
- Status : Hors ligne
Re: changer une date de JJ/MM/AAAA à AAAA/MM/JJ
Bonjour.
Vous pourriez tout simplement utiliser StringSplit() pour décomposer votre date en trois parties, puis de remettre en forme tel que vous le désirez.
Genre :
Le code ci-dessous a été écrit sur le smartphone, donc il peut subsister des erreurs. ^^
Envoyé de mon appareil mobile en utilisant Tapatalk
Vous pourriez tout simplement utiliser StringSplit() pour décomposer votre date en trois parties, puis de remettre en forme tel que vous le désirez.
Genre :
Code : Tout sélectionner
$date = "dd/mm/aaaa"
Local $adate = StringSplit($date, "/")
Local $sDate = $aDate[3] & "/" & $aDate[2] & "/" & $aDate[1]
MsgBox(32, "Date aaaa/mm/dd", $sDate)
Envoyé de mon appareil mobile en utilisant Tapatalk
Thierry
Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...
Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...
Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
Re: changer une date de JJ/MM/AAAA à AAAA/MM/JJ
Merci Thierry ,
je n'avais pas pensé à ça , j'étais parti plus sur une fonction plus précise
mais cela m'avance bien quand même
merci
je n'avais pas pensé à ça , j'étais parti plus sur une fonction plus précise
mais cela m'avance bien quand même
merci
- Tlem
- Site Admin
- Messages : 11773
- Enregistré le : ven. 20 juil. 2007 21:00
- Localisation : Bordeaux
- Status : Hors ligne
Re: changer une date de JJ/MM/AAAA à AAAA/MM/JJ
Hé bien dans ce cas, utilisez "la fonction précise" : _Convert_ddmmyyyy_To_yyyymmdd() ^^
Et pour encore plus de "précision", la même avec un check de la date :J'ai volontairement simplifié la gestion des erreurs, mais l'idée est là !!!
$date = "19/01/2018"
MsgBox(32, "Date aaaa/mm/dd", _Convert_ddmmyyyy_To_yyyymmdd($Date, "/"))
Func _Convert_ddmmyyyy_To_yyyymmdd($szDate, $szSeparator="")
Local $sdate = StringRegExpReplace($szDate, "[ /.///-]", "")
If StringLen($sdate) <> 8 Then Return SetError (1, 0, "")
Return StringRight($sdate, 4) & $szSeparator & StringMid($sdate, 3, 2) & $szSeparator & StringLeft($sdate, 2)
EndFunc
MsgBox(32, "Date aaaa/mm/dd", _Convert_ddmmyyyy_To_yyyymmdd($Date, "/"))
Func _Convert_ddmmyyyy_To_yyyymmdd($szDate, $szSeparator="")
Local $sdate = StringRegExpReplace($szDate, "[ /.///-]", "")
If StringLen($sdate) <> 8 Then Return SetError (1, 0, "")
Return StringRight($sdate, 4) & $szSeparator & StringMid($sdate, 3, 2) & $szSeparator & StringLeft($sdate, 2)
EndFunc
Et pour encore plus de "précision", la même avec un check de la date :
#include <Date.au3>
$date = "19/01/2018" ; date valide
MsgBox(32, "Date aaaa/mm/dd", _Convert_ddmmyyyy_To_yyyymmdd($Date, "/"))
$date = "19/21/2018" ; Erreur sur le mois
MsgBox(32, "Date aaaa/mm/dd", _Convert_ddmmyyyy_To_yyyymmdd($Date, "/"))
$date = "1/1/2018" ; Erreur sur le format
MsgBox(32, "Date aaaa/mm/dd", _Convert_ddmmyyyy_To_yyyymmdd($Date, "/"))
Func _Convert_ddmmyyyy_To_yyyymmdd($szDate, $szSeparator="")
Local $sdate = StringRegExpReplace($szDate, "[ /.///-]", "") ; Supprime les caractères de séparation de date
If StringLen($sdate) <> 8 Then Return SetError (1, 0, $szDate & " => Date Size Error") ; Vérifie qu'on a bien 8 chiffres
; Vérifie la validité de la date
If Not _DateIsValid(StringRight($sdate, 4) & "/" & StringMid($sdate, 3, 2) & "/" & StringLeft($sdate, 2)) Then Return SetError (1, 0, $szDate & " => Input Date Error")
; Retourne la date formatée avec le séparateur choisit.
Return StringRight($sdate, 4) & $szSeparator & StringMid($sdate, 3, 2) & $szSeparator & StringLeft($sdate, 2)
EndFunc
$date = "19/01/2018" ; date valide
MsgBox(32, "Date aaaa/mm/dd", _Convert_ddmmyyyy_To_yyyymmdd($Date, "/"))
$date = "19/21/2018" ; Erreur sur le mois
MsgBox(32, "Date aaaa/mm/dd", _Convert_ddmmyyyy_To_yyyymmdd($Date, "/"))
$date = "1/1/2018" ; Erreur sur le format
MsgBox(32, "Date aaaa/mm/dd", _Convert_ddmmyyyy_To_yyyymmdd($Date, "/"))
Func _Convert_ddmmyyyy_To_yyyymmdd($szDate, $szSeparator="")
Local $sdate = StringRegExpReplace($szDate, "[ /.///-]", "") ; Supprime les caractères de séparation de date
If StringLen($sdate) <> 8 Then Return SetError (1, 0, $szDate & " => Date Size Error") ; Vérifie qu'on a bien 8 chiffres
; Vérifie la validité de la date
If Not _DateIsValid(StringRight($sdate, 4) & "/" & StringMid($sdate, 3, 2) & "/" & StringLeft($sdate, 2)) Then Return SetError (1, 0, $szDate & " => Input Date Error")
; Retourne la date formatée avec le séparateur choisit.
Return StringRight($sdate, 4) & $szSeparator & StringMid($sdate, 3, 2) & $szSeparator & StringLeft($sdate, 2)
EndFunc
Thierry
Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...
Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...
Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
- mikell
- Spammer !
- Messages : 6292
- Enregistré le : dim. 29 mai 2011 17:32
- Localisation : Deep Cévennes
- Status : Hors ligne
Re: changer une date de JJ/MM/AAAA à AAAA/MM/JJ
Rhaalala ces gens qui lisent pas le fichier d'aide
D'après l'exemple n°2 pour StringRegExpReplace
D'après l'exemple n°2 pour StringRegExpReplace
" L'échec est le fondement de la réussite. " (Lao-Tseu )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
- Tlem
- Site Admin
- Messages : 11773
- Enregistré le : ven. 20 juil. 2007 21:00
- Localisation : Bordeaux
- Status : Hors ligne
Re: changer une date de JJ/MM/AAAA à AAAA/MM/JJ
Bonsoir.
Même si cela présente peu d’intérêtet que la vitesse d’exécution du code est d'un pouillème de pouilème plus rapide (oui je sais, c'est ridicule, mais bon) voici la même chose sans utiliser les expressions régulières. ^^
Même si cela présente peu d’intérêt
Local $d="19/01/2018"
MsgBox(0, "", StringRight($d, 4) & "/" & StringMid($d, 4, 2) & "/" & StringLeft($d, 2))
MsgBox(0, "", StringRight($d, 4) & "/" & StringMid($d, 4, 2) & "/" & StringLeft($d, 2))
Thierry
Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...
Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...
Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
- mikell
- Spammer !
- Messages : 6292
- Enregistré le : dim. 29 mai 2011 17:32
- Localisation : Deep Cévennes
- Status : Hors ligne
Re: changer une date de JJ/MM/AAAA à AAAA/MM/JJ
Bin disons que l'expression régulière a l'avantage de fonctionner pour une date qui ferait partie d'une phrase, par exemple, comme dans l'exemple du fichier d'aide. C'est pas rien
Maintenant à choisir, j'aime autant ton code du post n°2 (avis personnel of corse)
Maintenant à choisir, j'aime autant ton code du post n°2 (avis personnel of corse)
" L'échec est le fondement de la réussite. " (Lao-Tseu )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
- Tlem
- Site Admin
- Messages : 11773
- Enregistré le : ven. 20 juil. 2007 21:00
- Localisation : Bordeaux
- Status : Hors ligne
Re: changer une date de JJ/MM/AAAA à AAAA/MM/JJ
Soit, mais en théorie, lorsque l'on souhaite faire un traitement sur une date, on évite de rajouter d'autres choses. ^^
D'autant que l'argument n'est valable que si et seulement si il n'y a pas d'autre date ou chiffre dans la chaine à traiter.
Les fonctions du message 4 ont le mérite traiter et retourner des dates avec différents séparateurs.
Cela permet de traiter une date du genre 19/01/2018 ou 19.01.2018 ou 19-01-2018 ou encore 19 01 2018 et de retourner la date sous la forme AAAAMMJJ avec ou sans séparateur de son choix.
Pour couronner le tout la deuxième fonction vérifie la validité de la date de sortie.
PS: Concernant les temps de traitements, j'ai rayé mon commentaire qui est faux. De toute façon, a moins de faire des millions de traitements en boucle, l'écart est tellement infime qu'en parler était ridicule de ma part.
D'autant que l'argument n'est valable que si et seulement si il n'y a pas d'autre date ou chiffre dans la chaine à traiter.
Les fonctions du message 4 ont le mérite traiter et retourner des dates avec différents séparateurs.
Cela permet de traiter une date du genre 19/01/2018 ou 19.01.2018 ou 19-01-2018 ou encore 19 01 2018 et de retourner la date sous la forme AAAAMMJJ avec ou sans séparateur de son choix.
Pour couronner le tout la deuxième fonction vérifie la validité de la date de sortie.
PS: Concernant les temps de traitements, j'ai rayé mon commentaire qui est faux. De toute façon, a moins de faire des millions de traitements en boucle, l'écart est tellement infime qu'en parler était ridicule de ma part.
Thierry
Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...
Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...
Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
- orax
- Modérateur
- Messages : 1479
- Enregistré le : lun. 23 mars 2009 04:50
- Localisation : ::1
- Status : Hors ligne
Re: changer une date de JJ/MM/AAAA à AAAA/MM/JJ
Avec StringRegExpReplace, on pourrait faire...Tlem a écrit :Les fonctions du message 4 ont le mérite traiter et retourner des dates avec différents séparateurs.
Code : Tout sélectionner
MsgBox(0, "", StringRegExpReplace("19-01-2018", '(\d{2})(.?)(\d{2})(.?)(\d{4})', "$5$2$3$4$1"))
De petits détails peuvent faire toute la différence. — Quand la boule de neige commence à rouler… poussez-la. (Columbo)
- Tlem
- Site Admin
- Messages : 11773
- Enregistré le : ven. 20 juil. 2007 21:00
- Localisation : Bordeaux
- Status : Hors ligne
Re: changer une date de JJ/MM/AAAA à AAAA/MM/JJ
Heuuu, oui mais non !
Dans l'exemple que tu donne, tu récupère le séparateur de l'input que tu réutilise sur l'output !!! C'est pas vraiment ça le but. ^^
Bon après il faut peu de changement pour adapter, mais ce ne sera pas sur une seule ligne.
Et puis, il n'y a pas de gestion d'erreur et pas de contrôle sur la validité de la date.
Dans l'exemple que tu donne, tu récupère le séparateur de l'input que tu réutilise sur l'output !!! C'est pas vraiment ça le but. ^^
Bon après il faut peu de changement pour adapter, mais ce ne sera pas sur une seule ligne.
Et puis, il n'y a pas de gestion d'erreur et pas de contrôle sur la validité de la date.
Thierry
Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...
Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...
Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".