salut les amis
je veux savoir combien des jours (28,29,30 ou 31) dans le moi mai 2010 par example ou un autre moi ou annee ...
est ce que je peux faire ca avec TMonhCalendar ou avec un autre composant.
merci d avance
salut les amis
je veux savoir combien des jours (28,29,30 ou 31) dans le moi mai 2010 par example ou un autre moi ou annee ...
est ce que je peux faire ca avec TMonhCalendar ou avec un autre composant.
merci d avance
l'unité de base de Delphi DateUtils renferme tous les trésors que tu cherches !
un rapide tour dans l'aide de Delphi et tu verras toutes les fonctions qui t'intéressent !
Salut
Je confirme le post de Sylvain à condition de travailler sur une version récente de Delphi (DateUtils est disponible depuis D6 je crois) sinon :
+ F1 bien sûr
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 NbJoursMMAA = EncodeDate(AA,MM+1,01)-EncodeDate(AA,MM,01);
Pas de jugement hâtif et n'interprétez pas mal cet avis, mais je suis toujours étonné de la propension de nombre de développeurs à utiliser un objet pour faire des calculs relativement simples.
cdlt
e-ric
M E N S . A G I T A T . M O L E M
Debian 64bit, Lazarus + FPC -> n'oubliez pas de consulter les FAQ Delphi et Pascal ainsi que les cours et tutoriels Delphi et Pascal
"La théorie, c'est quand on sait tout, mais que rien ne marche. La pratique, c'est quand tout marche, mais qu'on ne sait pas pourquoi. En informatique, la théorie et la pratique sont réunies: rien ne marche et on ne sait pas pourquoi!".
Mais Emmanuel Kant disait aussi : "La théorie sans la pratique est inutile, la pratique sans la théorie est aveugle."
Et si on appelle ce code avec décembre ?Envoyé par e-ric
Il y a une fonction pour ça : DaysInMonth
Bloon
C'est vrai, j'ai été un peu vite
DaysInMonth existe-t'elle dans toutes les versions de Delphi ?
Ceci dit la correction de ma formule n'est pas difficile.
Bonne lecture !
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 function SimpleDaysInMonth(AA,MM: Word): Integer; var AAsuiv, MMsuiv: Word; begin Result := EncodeDate(AA + Ord(MM=12),((MM+1) mod 12)+1,01) - EncodeDate(AA,MM,01); End; // SimpleDaysInMonth
cdlt
e-ric
M E N S . A G I T A T . M O L E M
Debian 64bit, Lazarus + FPC -> n'oubliez pas de consulter les FAQ Delphi et Pascal ainsi que les cours et tutoriels Delphi et Pascal
"La théorie, c'est quand on sait tout, mais que rien ne marche. La pratique, c'est quand tout marche, mais qu'on ne sait pas pourquoi. En informatique, la théorie et la pratique sont réunies: rien ne marche et on ne sait pas pourquoi!".
Mais Emmanuel Kant disait aussi : "La théorie sans la pratique est inutile, la pratique sans la théorie est aveugle."
merci
j utilise la fonction Daysinmonth et ca marche et est ce que je peux avoir si aujourdhui un dimanche ou un lundi ou un autre
et aussi merci
Quelle curiosité !
F1 sur DayOfWeek(Date:TDateTime):Integer; !!
Pour ta précédente question, on ne pouvait te répondre directement sans connaître la version de Delphi sur laquelle tu travailles car ces routines n'ont pas toujours existé.
e-ric
M E N S . A G I T A T . M O L E M
Debian 64bit, Lazarus + FPC -> n'oubliez pas de consulter les FAQ Delphi et Pascal ainsi que les cours et tutoriels Delphi et Pascal
"La théorie, c'est quand on sait tout, mais que rien ne marche. La pratique, c'est quand tout marche, mais qu'on ne sait pas pourquoi. En informatique, la théorie et la pratique sont réunies: rien ne marche et on ne sait pas pourquoi!".
Mais Emmanuel Kant disait aussi : "La théorie sans la pratique est inutile, la pratique sans la théorie est aveugle."
Je conseil l'utilisation de DaysinAMonth(Annee,Mois) plutot que DaysinMonth(Mois) car ca prend pas en compte les années bissextile.
Modérateur Delphi
Le guide du bon forumeur :
- Les règles du forum tu liras
- La FAQ et les tutoriels tu consulteras
- La fonction Recherche tu utiliseras
- Google tu vénèreras
__________
Rayek World : Youtube Facebook
salut
Bon d abord j utilise Delphi 6...........
Mais pour la fonction DayOf et DayOfWeek(10/10/2005) il marche pas et il me donne un resultat 29/01/1899 quand j utilise les fonctions percedentes et je sais pas pourquoi?
merci d avance
Salut
Nous t'avons donné des éléments de réponse, tu peux quand même consulter l'aide en ligne pour approfondir tes connaissances.
Au vu des valeurs obtenues, tu as soustrait des dates ensembles (je me trompe ?). Peux-tu fourni le morceau de code incriminé ?
DayOfWeek retourne un nombre compris entre 1 et 7 représentant les jours d'une semaine (dimanche, lundi... son rang si tu préfères) et non pas une date, si tu convertis la donnée retournée avec DateToStr qui attend une date, tu vas obtenir une date allant du 01/01/1900 au 07/01/1900 (Ah la belle époque!).
Rappel : les TDateTime sont des réels (nombre de jour) dont 0 représente 31/12/1899, donc si tu passes le rang du jour retourné par DayOfWeek
cdlt
e-ric
M E N S . A G I T A T . M O L E M
Debian 64bit, Lazarus + FPC -> n'oubliez pas de consulter les FAQ Delphi et Pascal ainsi que les cours et tutoriels Delphi et Pascal
"La théorie, c'est quand on sait tout, mais que rien ne marche. La pratique, c'est quand tout marche, mais qu'on ne sait pas pourquoi. En informatique, la théorie et la pratique sont réunies: rien ne marche et on ne sait pas pourquoi!".
Mais Emmanuel Kant disait aussi : "La théorie sans la pratique est inutile, la pratique sans la théorie est aveugle."
salut
bon alors quand je veux savoir le numero du jours Entre 0 et 31 dans une date comme 20/10/2006 ...
pour moi je sais que c est le 20 mais comment je peux faire ca avec delphi
merci
Dans l'edi tu tappes DateUtils puis apres tu positionnes ton curseur dessus et tu appuies sur la tu auras toutes les commandes de gestions des dates à ta porté
Modérateur Delphi
Le guide du bon forumeur :
- Les règles du forum tu liras
- La FAQ et les tutoriels tu consulteras
- La fonction Recherche tu utiliseras
- Google tu vénèreras
__________
Rayek World : Youtube Facebook
A mon avis , tu n'as pas compris comment utiliser les TDateTime de Delphi !Envoyé par aliwassem
Le codage d'un TDateTime ne s'effectue pas en écrivant MaDate:=10/10/2005 en direct comme ça !
Il faut d'abord que tu encode ta date comme ceci :
Puis que tu utilises ta date encodée comme ceci :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 MaDate:=strtodate('10/10/2005');
Quand tu écris DayOfWeek(10/10/2005), Delphi effectue d'abord l'opération 10 divisé par 10 divisé par 2005 qui donne un nombre réel qui est la représentation, en TDateTime, du 29 Janvier 1899 !
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 MonJour:=DayOfWeek(MaDate);
Il faut donc que tu utilise impérativement les fonctions que t'offre Delphi pour faire la conversion entre TA représentation des Dates (Chaînes de caractères comme '10/10/2005', ou bien Triplets d'entiers Jour,Mois,Année) et SA représentation en TDatetime, sinon ça marche moins bien...
Bidouilleuse Delphi
Salut,Envoyé par aliwassem
Dans l'aide de Delphi :
A toi de l'appliquer.Scinde TDateTime en valeurs Année,Mois et Jour.
Unité
SysUtils
Catégorie
routines date/heure
Syntaxe Delphi :
procedure DecodeDate(Date:TDateTime;var Year,Month,Day:Word);
Syntaxe C++:
externPACKAGE void __ fastcallDecodeDate(constSystem::TDateTimeDateTime,Word &Year,Word &Month,Word &Day);
Description
La procédure DecodeDate sépare la valeur spécifiée par le paramètre Date en valeurs Année,Mois et Jour.Si la valeur TDateTime donnée est une année négative (BC),l'année,le mois et le jour renvoient les paramètres initialisés àzéro.
A+
On progresse .....
salut
j utilise la procedure DecodeDate et ca marche
bon merci a tout
aliwassem,
A l'avenir, il faudra que tu utilise et lise bien attentivement l'aide de Delphi. Car non seuelement, tu aurais pu trouver seule la réponse mais aussi, ça t'auras permis de l'apprehender beaucoup plus.
Ce n'est qu'un conseil.
Andry
On progresse .....
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager