Heure courante dans une chaîne de caractère
-
- Messages : 106
- Inscription : ven. 06/janv./2017 9:50
Heure courante dans une chaîne de caractère
Bonjour, voilà des jours que je cherche, donc mettre l'heure courante dans une chaîne de caractère, sans trouver de réponse.
J'aimerais par exemple faire :
Global Jour.i,Mois.i,Annee.i
Jour = CopieDate(1)
Mois = CopieDate(2)
Annee = CopieDate(3)
CopieDate() serait une fonction qui renvoie le jour, le mois ou l'année courante, en fonction du numéro d'index entre ().
Je trouve toutes les fonctions sur les heures et la date bien complexe, je n'ai également pas trouvé quelque chose qui répond à mes attentes. Beaucoup de fonctions renvoient un résultat en secondes avec des écarts etc, ce n'est pas très pratique.
Merci d'avance pour vos réponses.
Passez toutes et tous un très bon dimanche.
J'aimerais par exemple faire :
Global Jour.i,Mois.i,Annee.i
Jour = CopieDate(1)
Mois = CopieDate(2)
Annee = CopieDate(3)
CopieDate() serait une fonction qui renvoie le jour, le mois ou l'année courante, en fonction du numéro d'index entre ().
Je trouve toutes les fonctions sur les heures et la date bien complexe, je n'ai également pas trouvé quelque chose qui répond à mes attentes. Beaucoup de fonctions renvoient un résultat en secondes avec des écarts etc, ce n'est pas très pratique.
Merci d'avance pour vos réponses.
Passez toutes et tous un très bon dimanche.
Re: Heure courante dans une chaîne de caractère
Debug Str(Day(Date()))+"/"+Str(Month(Date()))+"/"+Str(Year(Date()))+" - "+Str(Hour(Date()))+":"+Str(Minute(Date()))+":"+Str(Second(Date()))
Re: Heure courante dans une chaîne de caractère
En prenant le code de case, tu peux te créer une proce de ce genre :
Je te conseils aussi l'utilisation des "Bind" si tu comptes afficher la date. ça évite les freezes en cas de déplacement de fenêtre.
Code : Tout sélectionner
Procedure.s DateToString(MODE_DATE=0)
Select MODE_DATE
Case 1 ; date
ladate.s = Str(Day(Date()))+"/"+Str(Month(Date()))+"/"+Str(Year(Date()))
Case 2 ; heure
ladate.s = Str(Hour(Date()))+":"+Str(Minute(Date()))+":"+Str(Second(Date()))
Default ; date + heure
ladate.s = Str(Day(Date()))+"/"+Str(Month(Date()))+"/"+Str(Year(Date()))+" - "+Str(Hour(Date()))+":"+Str(Minute(Date()))+":"+Str(Second(Date()))
EndSelect
ProcedureReturn ladate.s
EndProcedure
DateComplete.s = DateToString()
dateseule.s = DateToString(1)
heureseule.s = DateToString(2)
Debug DateComplete.s
Debug dateseule.s
Debug heureseule.s
Code : Tout sélectionner
Procedure.s DateToString(MODE_DATE=0)
Select MODE_DATE
Case 1 ; date
ladate.s = Str(Day(Date()))+"/"+Str(Month(Date()))+"/"+Str(Year(Date()))
Case 2 ; heure
ladate.s = Str(Hour(Date()))+":"+Str(Minute(Date()))+":"+Str(Second(Date()))
Default ; date + heure
ladate.s = Str(Day(Date()))+"/"+Str(Month(Date()))+"/"+Str(Year(Date()))+" - "+Str(Hour(Date()))+":"+Str(Minute(Date()))+":"+Str(Second(Date()))
EndSelect
ProcedureReturn ladate.s
EndProcedure
Procedure AfficheHeure()
SetGadgetText(1, DateToString() )
EndProcedure
If OpenWindow(0, 0, 0, 160, 40, "Exemple...", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
StringGadget (1, 5, 1, 150, 30, "",#ES_CENTER|#PB_String_ReadOnly)
SetGadgetText(1, DateToString() )
AddWindowTimer(0,10,1000)
BindEvent(#PB_Event_Timer,@AfficheHeure(),0)
Repeat
Event = WaitWindowEvent()
; Select Event : EndSelect
Until Event = #PB_Event_CloseWindow
EndIf
~~~~Règles du forum ~~~~
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
-
- Messages : 106
- Inscription : ven. 06/janv./2017 9:50
Re: Heure courante dans une chaîne de caractère
Bonjour et merci beaucoup à tous les deux.
Pour mon besoin, j'ai choisi la solution de case avec seulement un "Str(Day(Date()))+"/"+Str(Month(Date()))+"/"+Str(Year(Date()))Str(Day(Date()))+"/"+Str(Month(Date()))+"/"+Str(Year(Date()))
Car j'avais uniquement besoin de l'affichage de la date du jour, pour afficher par défaut la date d'examen pour des courbes graphiques de biorythme.
C'était en fais très simple. Merci également à Ar-S, pour son code super pratique !
Merci encore et passez une très bonne soirée.
Pour mon besoin, j'ai choisi la solution de case avec seulement un "Str(Day(Date()))+"/"+Str(Month(Date()))+"/"+Str(Year(Date()))Str(Day(Date()))+"/"+Str(Month(Date()))+"/"+Str(Year(Date()))
Car j'avais uniquement besoin de l'affichage de la date du jour, pour afficher par défaut la date d'examen pour des courbes graphiques de biorythme.
C'était en fais très simple. Merci également à Ar-S, pour son code super pratique !

Merci encore et passez une très bonne soirée.

Re: Heure courante dans une chaîne de caractère
Purebasic a une fonction pour cela :
https://www.purebasic.com/french/docume ... tdate.html
Note: Le temps et les dates supportées vont de '1970-01-01, 00:00:00' pour le minimum à '2038-01-19, 03:14:07' pour le maximum.
M.
https://www.purebasic.com/french/docume ... tdate.html
Note: Le temps et les dates supportées vont de '1970-01-01, 00:00:00' pour le minimum à '2038-01-19, 03:14:07' pour le maximum.
Code : Tout sélectionner
Procedure.s FormatDateEx(MODE_DATE=0)
Protected ladate.s
Select MODE_DATE
Case 1 ; date
ladate = FormatDate("%dd/%mm/%yyyy", Date())
Case 2 ; heure
ladate = FormatDate("%hh:%ii:%ss", Date())
Default ; date + heure
ladate =FormatDate("%dd/%mm/%yyyy", Date()) + " - " + FormatDate("%hh:%ii:%ss", Date())
EndSelect
ProcedureReturn ladate
EndProcedure
DateComplete.s = FormatDateEx()
dateseule.s = FormatDateEx(1)
heureseule.s = FormatDateEx(2)
Debug DateComplete
Debug dateseule
Debug heureseule
D$=FormatDate("%dd %mm %yyyy", Date())
Debug D$
-
- Messages : 106
- Inscription : ven. 06/janv./2017 9:50
Re: Heure courante dans une chaîne de caractère
Bonjour Mesa,
Merci beaucoup, mais j'avais déjà ces fonctions, mais je n'avais absolument rien compris à cette histoire de secondes écouler depuis le "1970-01-01, 00:00:00", je pensais qu'il fallait écrire des calcules complexes pour avoir la date du jour, à cause de l'explication de la documentation qui parle des secondes écouler depuis justement ce "1970-01-01, 00:00:00".
Comme je suis en France et que je vais donc utiliser les formats de dates et d'heures de notre pays.
La chaîne de caractère de Case : Str(Day(Date()))+"/"+Str(Month(Date()))+"/"+Str(Year(Date()))+" - "+Str(Hour(Date()))+":"+Str(Minute(Date()))+":"+Str(Second(Date())) est beaucoup simple à comprendre pour moi et m'a permis du 1er coup d'afficher simplement la date système du jour, dont j'avais besoin.
Ar-S : Comment as-tu afficher le cadre dans la fenêtre de l'heure de ton code ? Je ne vois pas de fonction pour mettre un cadre dans une fenêtre.
Voici la portion de code avec la date du jour, j'ai eu besoin de faire l'ajout du 0 pour les mois de 1 à 9, car par exemple,
sinon ça affiche le 10/6/2017, donc avec mon petit code j'ai bien le 10/06/2017. ^^
Merci beaucoup, mais j'avais déjà ces fonctions, mais je n'avais absolument rien compris à cette histoire de secondes écouler depuis le "1970-01-01, 00:00:00", je pensais qu'il fallait écrire des calcules complexes pour avoir la date du jour, à cause de l'explication de la documentation qui parle des secondes écouler depuis justement ce "1970-01-01, 00:00:00".
Comme je suis en France et que je vais donc utiliser les formats de dates et d'heures de notre pays.
La chaîne de caractère de Case : Str(Day(Date()))+"/"+Str(Month(Date()))+"/"+Str(Year(Date()))+" - "+Str(Hour(Date()))+":"+Str(Minute(Date()))+":"+Str(Second(Date())) est beaucoup simple à comprendre pour moi et m'a permis du 1er coup d'afficher simplement la date système du jour, dont j'avais besoin.
Ar-S : Comment as-tu afficher le cadre dans la fenêtre de l'heure de ton code ? Je ne vois pas de fonction pour mettre un cadre dans une fenêtre.
Voici la portion de code avec la date du jour, j'ai eu besoin de faire l'ajout du 0 pour les mois de 1 à 9, car par exemple,
sinon ça affiche le 10/6/2017, donc avec mon petit code j'ai bien le 10/06/2017. ^^
Code : Tout sélectionner
If Str(Month(Date())) = "1" : Mois_Actuel = "01"
ElseIf Str(Month(Date())) = "2" : Mois_Actuel = "02"
ElseIf Str(Month(Date())) = "3" : Mois_Actuel = "03"
ElseIf Str(Month(Date())) = "4" : Mois_Actuel = "04"
ElseIf Str(Month(Date())) = "5" : Mois_Actuel = "05"
ElseIf Str(Month(Date())) = "6" : Mois_Actuel = "06"
ElseIf Str(Month(Date())) = "7" : Mois_Actuel = "07"
ElseIf Str(Month(Date())) = "8" : Mois_Actuel = "08"
ElseIf Str(Month(Date())) = "9" : Mois_Actuel = "09" : EndIf
StringGadget(#Date_Examen ,150,30,100,20,Str(Day(Date()))+"/"+Mois_Actuel+"/"+Str(Year(Date())))
Re: Heure courante dans une chaîne de caractère
Pourquoi n'utilises-tu pas la fonction RSet() ?
Par exemple :
Par exemple :
Code : Tout sélectionner
RSet(Str(Month(Date())), 2 "0")
Microsoft Windows 10 Famille 64 bits : Carte mère : ASRock 970 Extreme3 R2.0 : Carte Graphique NVIDIA GeForce RTX 3080 : Processeur AMD FX 6300 6 cœurs 12 threads 3,50 GHz PB 6.20 LTS (x64)
Un homme doit être poli, mais il doit aussi être libre !
Un homme doit être poli, mais il doit aussi être libre !
Re: Heure courante dans une chaîne de caractère
oui je te conseille de bien regarder attentivement les fonctions proposé dans la librairie "String" de Purebasic
il existe pas mal de petites fonctions bien utiles
pis si tu coinces, on en a d'autre en stock
il existe pas mal de petites fonctions bien utiles
pis si tu coinces, on en a d'autre en stock

Re: Heure courante dans une chaîne de caractère
La chaîne de caractère de Case : Str(Day(Date()))+"/"+Str(Month(Date()))+"/"+Str(Year(Date()))+" - "+Str(Hour(Date()))+":"+Str(Minute(Date()))+":"+Str(Second(Date())) est beaucoup simple à comprendre pour moi et m'a permis du 1er coup d'afficher simplement la date système du jour, dont j'avais besoin.


Code : Tout sélectionner
Debug FormatDate( "%dd/%mm/%yyyy", Date() ) ; => 21/06/2017


1/1/1970 parce que c'est un mode de datation informatique.
Même si à l'origine c'est un mode unix, la plupart des langages de programmation se basent sur ce « point de départ »

FormatDate() a son opposé ParseDate() qui transforme une date chaine en date numérique (nb de secondes depuis 1/1/1970)
Les deux sont utiles pour travailler avec les gadgets DateGadget() et CalendarGadget() afin de définir une date à afficher ou récupérer la saisie utilisateur.

Re: Heure courante dans une chaîne de caractère
<< écouler >> s'accorde et donne << écoulées >>PCPixMusic a écrit :Merci beaucoup, mais j'avais déjà ces fonctions, mais je n'avais absolument rien compris
à cette histoire de secondes écouler depuis le "1970-01-01, 00:00:00", je pensais qu'il
fallait écrire des calcules complexes pour avoir la date du jour, à cause de l'explication de
la documentation qui parle des secondes écouler depuis justement ce "1970-01-01,
00:00:00".
<< calcules >> ne s'accorde pas autant et donne << calculs >>.
Cela peut te donner une idée de la difficulté que ça donne de créer une doc.
Maintenant, avec ou sans petites erreurs, toute suggestion d'explication peut être bonne à prendre et enrichir la doc.
Rassure-toi, je semble faire l'apôtre de la pédagogie, mais je viens de prendre un sérieux échec par mail en me rendant compte que je pouvais négliger l'ignorance de l'autre.
Aussi, j'ai déjà été plus humiliant avec Mesa, sans même m'excuser. Mais quand même, passé ce truc de "je fais un truc de France parce que je suis de France" (là aussi je suis passé par là), Mesa a offert plusieurs utilisations à FormatDate(). Ce n'est pas une histoire de France ou pas France, c'est une histoire de combinaison de caractères.
Par exemple :
Code : Tout sélectionner
Debug FormatDate("%MM", Date() )
Bon courage à toi.
Re: Heure courante dans une chaîne de caractère
Bonjour a toutes et a tous,
Je débute et c’est vrai que je n’ai pas tout compris des codes affichés, je me suis lancé dans l’affichage des dates, avec la date actuelle, ce n’est surement pas optimisé mais je tente de m’améliorer.
Deux questions aux spécialistes :
-J’ai fait des tableaux pour les jours (jr(x)) et mois (ms(x)) mais peut être qu’ils existent déjà ?
-Je souhaiterai afficher les phases de la lune (ex : nouvelle lune code 127761) mais je n’ai pas tout compris pour le codage Unicode, et je crois que Purebasic s’arrête vers les 65000 mais ?
J'espère que le code fonctionnera chez vous.
Bonne journée.
Je débute et c’est vrai que je n’ai pas tout compris des codes affichés, je me suis lancé dans l’affichage des dates, avec la date actuelle, ce n’est surement pas optimisé mais je tente de m’améliorer.
Deux questions aux spécialistes :
-J’ai fait des tableaux pour les jours (jr(x)) et mois (ms(x)) mais peut être qu’ils existent déjà ?
-Je souhaiterai afficher les phases de la lune (ex : nouvelle lune code 127761) mais je n’ai pas tout compris pour le codage Unicode, et je crois que Purebasic s’arrête vers les 65000 mais ?
J'espère que le code fonctionnera chez vous.
Bonne journée.
Code : Tout sélectionner
Dim jr.s(6)
Dim ms.s(12)
jr(0)= "Dimanche"
jr(1)= "Lundi"
jr(2)= "Mardi"
jr(3)= "Mercredi"
jr(4)= "Jeudi"
jr(5)= "Vendredi"
jr(6)= "Samedi"
ms(1)="Janvier"
ms(2)="Février"
ms(3)="Mars"
ms(4)="Avril"
ms(5)="Mai"
ms(6)="Juin"
ms(7)="Juillet"
ms(8)="Août"
ms(9)="Septembre"
ms(10)="Octobre"
ms(11)="Novembre"
ms(12)="Décembre"
chain.s
Dat=Date()
Debug "La date actuelle :"
Debug "Numérique : " + Dat
Debug "Formatée 1 : " + FormatDate("%dd/%mm/%yyyy", Dat)
Debug "Formatée 2 : " +FormatDate("%dd/%mm/%yyyy %hhh %iimn %sss", Dat)
Debug "Formatée avec jours et mois :" + jr(DayOfWeek(Dat))+ " " + FormatDate("%dd ", Dat) + ms(Month(Dat)) + FormatDate(" %yyyy", Dat)
chain = jr(DayOfWeek(Dat))+ " " + FormatDate("%dd ", Dat) + ms(Month(Dat)) + FormatDate(" %yyyy", Dat)
Debug "Transformée en texte = " + chain
If Day(Dat)= <10
chain = "0" + Str(Day(Dat))
Else
chain = Str(Day(Dat))
EndIf
chain + "/"
If Month(Dat) <10
chain +"0" + Str(Month(Dat))
Else
chain + Str(Month(Dat))
EndIf
chain + "/" + Str(Year(Dat))
Debug "Transformée en texte Mois et jours 0x= " + chain
Toshiba satellite Windows 7 64bits
Re: Heure courante dans une chaîne de caractère
Je n'ai pas de cadre, c'est le stringgadget() qui s'affiche ainsi.PCPixMusic a écrit :Ar-S : Comment as-tu afficher le cadre dans la fenêtre de l'heure de ton code ? Je ne vois pas de fonction pour mettre un cadre dans une fenêtre.
~~~~Règles du forum ~~~~
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
Re: Heure courante dans une chaîne de caractère
Non, car il faudrait en faire un pour chaque langue (ou alors puiser dans les API de l'os hôte)pierre003 a écrit : -J’ai fait des tableaux pour les jours (jr(x)) et mois (ms(x)) mais peut être qu’ils existent déjà ?
Par contre on peut utiliser le « couteau à saucisson » : StringField (équivalent de split dans d'autres langages)
pour gagner des lignes.
Exemple très aéré
(montre aussi qu'on peut couper des lignes en PB (après + et ,)
Code : Tout sélectionner
Str_Days.s = "Dimanche,Lundi,Mardi,Mercredi,Jeudi,Vendredi,Samedi"
Str_Months.s = "Janvier,Février,Mars,Avril,Mai,Juin,Juillet,Août,Septembre,Octobre,Novembre,Décembre"
Dat = Date()
Stamp.s = StringField(Str_Days, DayOfWeek( Dat ), ",") +
" " +
Day( Dat ) +
" " +
StringField(Str_Months, Month( Dat ), ",") +
" " +
Year( Dat )
Debug Stamp ; => Mardi 21 Juin 2017
65000 c'est le nombre de caractères que peut contenir une fonte unicode.pierre003 a écrit : -Je souhaiterai afficher les phases de la lune (ex : nouvelle lune code 127761) mais je n’ai pas tout compris pour le codage Unicode, et je crois que Purebasic s’arrête vers les 65000 mais ?
Il faut choisir une fonte qui contient ton symbole et donner son code dans la bonne base (décimale ou hexa etc)
La limite des variables est là: Variables, Types et Opérateurs

-
- Messages : 106
- Inscription : ven. 06/janv./2017 9:50
Re: Heure courante dans une chaîne de caractère
Micoute : Pourquoi n'utilises-tu pas la fonction RSet() ? => Merci, je ne connais pas cette fonction. 
Zorro : Merci, j'ai déjà exploré la librairie String, mais après seulement six mois de programmation en PureBasic,
j'avoue qu'il y a des choses qui m'échappent encore.
Marc56 : Merci, c'est vrai que c'est plus simple.
Ollivier : Merci pour la correction des fautes. Il n'y a rien d'humiliant à faire des corrections, ça reste dans un échange courtois.
pierre003 : Sympa ton code
Ar-S : En effet, je n'avais pas fait attention au fait que tu l'as fait assez large avec une valeur de trente pixels.

Zorro : Merci, j'ai déjà exploré la librairie String, mais après seulement six mois de programmation en PureBasic,
j'avoue qu'il y a des choses qui m'échappent encore.

Marc56 : Merci, c'est vrai que c'est plus simple.

Ollivier : Merci pour la correction des fautes. Il n'y a rien d'humiliant à faire des corrections, ça reste dans un échange courtois.
pierre003 : Sympa ton code
Ar-S : En effet, je n'avais pas fait attention au fait que tu l'as fait assez large avec une valeur de trente pixels.
Re: Heure courante dans une chaîne de caractère
exemple avec rset() calle a droite d'une chaine de longueur fixe une chaine.
Lset() calle la chaine a gauche
rset(chaine,longueur,caractere de remplissage)
exemple rset ("1",2,"0") retournera "01"
exemple rset ("1",4,"0") retournera "0001"
lset(chaine,longueur,caractere de remplissage)
exemple lset ("1",2,"0") retournera "10"
exemple lset ("1",4,"@") retournera "1@@@"
Lset() calle la chaine a gauche
rset(chaine,longueur,caractere de remplissage)
exemple rset ("1",2,"0") retournera "01"
exemple rset ("1",4,"0") retournera "0001"
lset(chaine,longueur,caractere de remplissage)
exemple lset ("1",2,"0") retournera "10"
exemple lset ("1",4,"@") retournera "1@@@"
Code : Tout sélectionner
debug RSet(Str(Day(Date())),2,"0")+"/"+RSet(Str(Month(Date())),2,"0")+"/"+Str(Year(Date()))+" - "+RSet(Str(Hour(Date())),2,"0")+":"+RSet(Str(Minute(Date())),2,"0")+":"+RSet(Str(Second(Date())),2,"0")