Afficher l'heure au format 24H avec GUICtrlCreateDate

Aide et conseils concernant AutoIt et ses outils.
Règles du forum
.
Répondre
Avatar du membre
Kaplan
Niveau 1
Niveau 1
Messages : 12
Enregistré le : mar. 10 juin 2014 07:59
Localisation : Rennes
Status : Hors ligne

Afficher l'heure au format 24H avec GUICtrlCreateDate

#1

Message par Kaplan »

Bonjour à tous,

Je construis une application permettant la modification des dates des fichiers.
Malheureusement je rencontre 2 difficultés :
- le format de l'heure retournée par GUICtrlCreateDate, est en 12H : je souhaiterais la transformer en 24H et faire figurer les secondes :cry:
- le texte du champ Date n'est pas centré. :x

Auriez-vous des pistes pour résoudre ce problème ?
Merci par avance pour vos lumières ...

Voici le code en question :

Code : Tout sélectionner

#include <DateTimeConstants.au3>
#include <MsgBoxConstants.au3>
#include <FileConstants.au3>
#include <File.au3>
#include <GUIConstantsEx.au3>
#include <GUIConstants.au3>
#include <ButtonConstants.au3>
#include <EditConstants.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
#include <string.au3>
#include <Date.au3>
#include <Array.au3>
#include <ButtonConstants.au3>

; Datemodif
$version = "1.0"
$colorbleu = 0x003366 ;Bleu foncé
$colorblanc = 0xFFFFFF  ;blanc
$colorge = 0xFF0000  ;rouge
$allong = 100

Global $Gui = GUICreate("Datemodif " & $version, 500 + $allong, 110, @DesktopWidth / 2 - 160, @DesktopHeight / 2 - 45, -1, BitOR($WS_EX_ACCEPTFILES, $WS_EX_TOPMOST))
GUICtrlCreatePic(".\ocean.jpg", 0, 0, 500 + $allong, 110, 0)
;
; Date sélectionnée
$labdate = GUICtrlCreateLabel("Date :", 20, 70, 200, 30)
GUICtrlSetBkColor($labdate, $GUI_BKCOLOR_TRANSPARENT)
GUICtrlSetColor($labdate, $colorbleu)
GUICtrlSetFont($labdate, 12, 800)
Local $Date = GUICtrlCreateDate("", 110, 70, 250 + $allong, 30)

_DateTimeFormat ( $Date, 5 )
Local $sStyle = "yyyyMMdd hh:mm:ss"

GUICtrlSendMsg($Date, $DTM_SETFORMATW, 0, $sStyle)
GUICtrlSetFont($Date, 10, 400)
GUICtrlSetFont($Date, 12, 800)

; Chemin du fichier à traiter
$labfich = GUICtrlCreateLabel("Fichier :", 20, 20, 200, 30, $SS_LEFT)
GUICtrlSetBkColor($labfich, $GUI_BKCOLOR_TRANSPARENT)
GUICtrlSetColor($labfich, $colorbleu)
GUICtrlSetFont($labfich, 12, 800)

Global $Chem = GUICtrlCreateInput("", 110, 10, 250 + $allong, 30)
GUICtrlSetState($Chem, BitOR($GUI_DROPACCEPTED, $GUI_FOCUS, $GUI_ACCEPTFILES))
GUICtrlSetColor($Chem, $colorbleu)
GUICtrlSetFont($Chem, 10, 800)

$cree = GUICtrlCreateCheckbox("Créé", 190, 50, 12, 12)
$mod = GUICtrlCreateCheckbox("Modifié", 290, 50, 12, 12)
$acc = GUICtrlCreateCheckbox("Accédé", 390, 50, 12, 12)
$labcree = GUICtrlCreateLabel("Créé", 160, 50, 40, 12)
GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT)
GUICtrlSetColor(-1, $colorbleu)
$labmod = GUICtrlCreateLabel("Modifié", 250, 50, 40, 12)
GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT)
GUICtrlSetColor(-1, $colorbleu)
$labacc = GUICtrlCreateLabel("Accédé", 345, 50, 40, 12)
GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT)
GUICtrlSetColor(-1, $colorbleu)

; Bouton de démarrage
$Start = GUICtrlCreateButton("Lancer", 400 + $allong, 30, 60, 50)
GUICtrlSetBkColor($Start, $colorbleu)
GUICtrlSetColor($Start, $colorblanc)
GUICtrlSetFont($Start, 11, 800)
GUISetState(@SW_SHOW, $Gui)

While 1
	$msg = GUIGetMsg()
	If $msg = $GUI_EVENT_CLOSE Then     ;fermeture de l'application
		Exit
	EndIf
	If $msg = $Start Then
		Go()
		MsgBox(262144, "Info", "Date(s) modifiée(s)", 3)
	EndIf
WEnd

; Fonctions
Func Go()
	$Lectchem = GUICtrlRead($Chem)
	$lectdate = GUICtrlRead($Date)
	;	transformation des dates dans le fichier
	Local $sStyle = "yyyyMMdd hh:mm:ss"
	If GUICtrlRead($mod) = $GUI_CHECKED Then
		$iFileSetTime = FileSetTime($Lectchem, $lectdate, 0)
		Sleep(30)
	EndIf
	If GUICtrlRead($cree) = $GUI_CHECKED Then
		$iFileSetTime = FileSetTime($Lectchem, $lectdate, 1)
		Sleep(30)
	EndIf
	If GUICtrlRead($acc) = $GUI_CHECKED Then
		$iFileSetTime = FileSetTime($Lectchem, $lectdate, 2)
		Sleep(30)
	EndIf
EndFunc   ;==>Go
« Le remède à l'ennui, c'est la curiosité. La curiosité elle, est sans remède. »
Avatar du membre
Nine
AutoIt MVPs (MVP)
AutoIt MVPs (MVP)
Messages : 48
Enregistré le : ven. 17 avr. 2020 01:23
Status : Hors ligne

Re: Afficher l'heure au format 24H avec GUICtrlCreateDate

#2

Message par Nine »

Le troisième exemple du fichier d'aide sous GUICtrlCreateDate décrit exactement ce que tu cherches. Quant au centrage du champ, j'ai bien peur qu'il n'y ait pas de moyen automatique de le faire. Cependant tu peux ajouter autant d'espaces que tu veux en début de format de la date pour ainsi le centrer. Tu dois retirer les espaces au retour cependant...
Avatar du membre
walkson
Modérateur
Modérateur
Messages : 911
Enregistré le : ven. 12 août 2011 19:49
Localisation : Hurepoix
Status : Hors ligne

Re: Afficher l'heure au format 24H avec GUICtrlCreateDate  

#3

Message par walkson »

Bonjour,
Il faut jouer sur les styles (voir commentaires dans le code)

Code : Tout sélectionner

#include <DateTimeConstants.au3>
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
#include <Date.au3>
;https://www.autoitscript.com/forum/topic/107618-format-date-string/?do=findComment&comment=759083
Global $Form1 = GUICreate("", 273, 192)
Global $Date1 = GUICtrlCreateDate(_NowCalc(), 24, 16, 225, 33)
GUICtrlSendMsg($Date1, 0x1032, 0, "dd/MM/yyyy HH:mm:ss"); sur 24 h
Global $Date2 = GUICtrlCreateDate(_NowCalc(), 24, 56, 225, 33)
GUICtrlSendMsg($Date2, 0x1032, 0, "dd/MM/yyyy hh:mm") ; sur 12 h
Local $iDate = "2020 01 15 23:30:11" ; ou "2020/01/15 14:30:11" format date à conserver sinon renvoie la date du jour
Global $Date3 = GUICtrlCreateDate($iDate, 24, 96, 225, 33)
GUICtrlSendMsg($Date3, 0x1032, 0, "              yyyy MM dd  hh:mm:ss");centrage et format 12 h
Global $Label1 = GUICtrlCreateLabel("", 24, 144, 228, 33)
GUICtrlSetBkColor(-1, 0xFFFFEF)
GUISetState(@SW_SHOW)

GUICtrlSetData($Label1, StringStripWS(GUICtrlRead($Date3),1)) ;enlève les espaces-blancs du début de chaîne

While 1
 $nMsg = GUIGetMsg()
 Switch $nMsg
  Case $GUI_EVENT_CLOSE
   Exit

 EndSwitch
WEnd
Cordialement,
Walkson
"Horas non numero nisi serenas " Le canon de midi
(Je ne compte que les heures heureuses)
Avatar du membre
Kaplan
Niveau 1
Niveau 1
Messages : 12
Enregistré le : mar. 10 juin 2014 07:59
Localisation : Rennes
Status : Hors ligne

Re: Afficher l'heure au format 24H avec GUICtrlCreateDate

#4

Message par Kaplan »

:D walkson, Nine,

Un grand merci pour votre aide. Effectivement, le libellé avec le respect des majuscules-minuscules pour
GUICtrlSendMsg($Date1, 0x1032, 0, "dd/MM/yyyy HH:mm:ss"); sur 24 h est fondamental. J'étais passé à côté ... :oops:
De même, je n'avais pas trouvé l'astuce consistant à rajouter des espaces dans le code pour obtenir le centrage. Après tout, la longueur de la date affichée est toujours la même alors on ne voit pas la différence avec un centrage automatique.

Merci pour votre aide précise et précieuse sur mon problème qui passe en "résolu".
« Le remède à l'ennui, c'est la curiosité. La curiosité elle, est sans remède. »
Répondre