|
Publicité ' | ||||||||||||||||||||||||
|
|
#1 |
|
Membre Expert
![]() David GuillotChef de projet en SSII Inscription : mars 2004 Messages : 879 ![]() |
![]() j'en ai eu marre de voir plein de gens poster sur le forum pour des problemes de traitements des dates en PHP (notamment à cause des problemes de compatibilités entre les dates anciennes et les timestamp Unix, ou à cause des formats de dates sous MySQL, etc...) j'ai donc decidé de developper une classe DateHeure (qui sera ensuite à la disposition de chacun dans la partie code source) qui permettra de resoudre tous ces petits tracas. pour l'instant elle fait : - construction à partir de 6 nombres (si pas de valeurs, je constuis a partir de la date du jour) - construction à partir d'un timestamp MySQL - creation d'un timesstamp MySQL - formattage pour affichage et je compte realiser sous peu : - constuction a partir d'un timestamp Unix - creation d'un timestamp Unix - addition, soustraction de dates voilà, si vous avez des idées de methodes qui vous sembleraient utiles, n'hesitez pas à m'en faire part, je noterai toute suggestion, mais le developpement ne sera pas instantané... [edit]si vous trouvez que c'est tout nul, que ça sert ç rien et que je perds mon temps, vous pouvez me le dire aussi de vos suggestions++
__________________
Avant de poser une question ici : ![]() Après résolution de votre question : un clic sur , un et un vote pour les personnes qui vous ont aidé |
|
00
|
|
|
#2 |
|
Membre Expert
![]() David GuillotChef de projet en SSII Inscription : mars 2004 Messages : 879 ![]() |
tres bonne idee les fuseaux horaires (et meme peut-etre une gestion de l'heure d'été ?).
![]() pour le problemes des bases de données, pour l'instant je me suis attaqué à MySQL, il faudra que je me renseigne des differents formats de dates proposés sur les autres SGBD, afin de generaliser un peu tout ça... n'hesitez pas ;-)
__________________
Avant de poser une question ici : ![]() Après résolution de votre question : un clic sur , un et un vote pour les personnes qui vous ont aidé |
|
00
|
|
|
#3 |
|
Candidat au titre de Membre du Club
![]() Inscription : août 2004 Messages : 15 ![]() |
Personnellement, j'ai fait une fonction hier soir qui permet de transformer une DATETIME MySQL (YYYY-MM-JJ HH:MM:SS) en date formatée ainsi :
Je la posterais demain (car au boulo...) |
|
|
00
|
|
|
#4 |
|
Membre Expert
![]() David GuillotChef de projet en SSII Inscription : mars 2004 Messages : 879 ![]() |
pour ta contribution ;-), et en effet, j'oubliais de preciser : si vous avez deja developpé une petite fonction qui fait un petit truc specifique sur les dates, n'hesitez pas à me la fournir. ça permettra de faire une mise en commun des talents et de m'epargner du travail
__________________
Avant de poser une question ici : ![]() Après résolution de votre question : un clic sur , un et un vote pour les personnes qui vous ont aidé |
|
00
|
|
|
#5 |
|
Membre Expert
![]() David GuillotChef de projet en SSII Inscription : mars 2004 Messages : 879 ![]() |
voilà en fait je pense que ça va plutôt se transformer en projet de developpement en commun (j'aimerais bien m'occuper de la mise en commun, l'integration des methodes dans la classe finale)
le topic vient donc d'etre mis en post-it (merci Blade ;-)), chacun pourra maintenant y apporter sa petite contribution, sans risque de le voir couler dans les profondeurs du classement ;-)
__________________
Avant de poser une question ici : ![]() Après résolution de votre question : un clic sur , un et un vote pour les personnes qui vous ont aidé |
|
00
|
|
|
#6 |
|
Membre chevronné
![]() |
Simple question : y a pas déjà ça dans Pear ?
|
|
|
00
|
|
|
#7 | |
|
Membre Expert
![]() David GuillotChef de projet en SSII Inscription : mars 2004 Messages : 879 ![]() |
Citation:
moi ce que je propose c'est vraiment un gros truc, effectivement aussi solide qu'une classe Pear, qui resolve d'un coup tous les problemes de dates PHP. et pour ça j'ai besoin de tout le monde ;-) le but est aussi d'etre evolutif, ainsi des fonctionnalités pourront se rajouter dans l'avenir...
__________________
Avant de poser une question ici : ![]() Après résolution de votre question : un clic sur , un et un vote pour les personnes qui vous ont aidé |
|
|
00
|
|
|
#8 |
|
Membre chevronné
![]() |
bah moi ça ne m'étonnerait pas que ça le fasse déjà... c'est pourquoi je te conseille de d'abord vérifier....
|
|
|
00
|
|
|
#9 |
|
Membre actif
![]() Inscription : août 2003 Messages : 159 ![]() |
C'est vrai que vous avez un serieux "concurent" http://pear.php.net/package/Date
En principe les packages pear sont des usines a gaz, ca serait presque leur défaut. Je salue toutefois l'idée, et puis y'a toujours de nouvelles choses a apporter. Jai vu que le package pear ne se base pas sur le timestamp pour les calculs, et ca c'est tres important : on n'est pas limité de 1970 a 2038, ca peut donc etre utilisé de facon generique (idée a prendre). |
|
|
00
|
|
|
#10 | |
|
Membre Expert
![]() David GuillotChef de projet en SSII Inscription : mars 2004 Messages : 879 ![]() |
Citation:
__________________
Avant de poser une question ici : ![]() Après résolution de votre question : un clic sur , un et un vote pour les personnes qui vous ont aidé |
|
|
00
|
|
|
#11 |
|
Membre actif
![]() Inscription : août 2003 Messages : 159 ![]() |
Ok, tu fais donc les calculs directement basés sur le calendrier grégorien ? Peux-tu gerer des dates inferieures au 9 Decembre 1582 basées sur le calendrier Julien ?
Je dis ca parce-que je viens de me renseigner et je constate avec effarement que la période du 10 decembre 1582 au 19 décembre n'a jammais existé En gros, sur quoi te bases-tu ? |
|
|
00
|
|
|
#12 |
|
Membre Expert
![]() David GuillotChef de projet en SSII Inscription : mars 2004 Messages : 879 ![]() |
je me base sur le calendrier grégorien, truc normal quoi...
je n'avais pas songé aux calculs juliens, et je n'ai donc pas encore testé la periode que tu indiques...
__________________
Avant de poser une question ici : ![]() Après résolution de votre question : un clic sur , un et un vote pour les personnes qui vous ont aidé |
|
00
|
|
|
#13 |
|
Expert Confirmé Sénior
![]() Mathias GaunardIngénieur développement logiciels Inscription : décembre 2003 Messages : 3 543 ![]() |
Si on utilise un système non windows, le timestamp est valide jusqu'en 1900.. ça devrait suffire non ?
|
|
|
00
|
|
|
#14 | |
|
Membre Expert
![]() David GuillotChef de projet en SSII Inscription : mars 2004 Messages : 879 ![]() |
Citation:
c'est justement une des raisons de vivre de ce projet ;-)
__________________
Avant de poser une question ici : ![]() Après résolution de votre question : un clic sur , un et un vote pour les personnes qui vous ont aidé |
|
|
00
|
|
|
#15 | ||
|
Candidat au titre de Membre du Club
![]() Inscription : août 2004 Messages : 15 ![]() |
Alors ma fonction ne vous servira pas à grand chose
Code :
|
||
|
|
00
|
|
|
#16 | ||||
|
Membre actif
![]() Inscription : août 2003 Messages : 159 ![]() |
Bon, ben je me suis amusé a faire une petite serie de fonctions pour gerer les dates sans utiliser le timestamp (sauf pour avoir la date actuelle bien sur, je vois pas d'autres moyen). Je me suis basé sur le jour Julien qui est aux jours ce que le timestamp est aux secondes. C'est un comptage des jours depuis le 1er janvier -4712. Un jour étant repéré par son numero de jour Julien + Le nombre de secondes écoulées, il devient vraiment aisé de faire toute sorte de calculs dessus. J'ecris ce texte par exemple au 2453337eme jour julien, 69693eme seconde.
Une date est representée par un tableau généré par __getDate() et qui ressemble beaucoup au tableau de getdate() de php. Les fonctions dependant donc toutes les unes des autres, je suis obligé de mettre tout le lot, désolé pour la longueur (les noms des fonctions ont aussi des noms à ralonge, je savais pas quoi mettre, j'ai donc choisit des noms explicites si possible) Bon, c'est un 1er jet, y'a pas de controle d'erreur et beaucoups sont à ameliorer ! Code :
Voilà, dans la foulée, je met un exemple (a essayer) qui montre de quoi elles sont capables pour le moment : Code :
Torvalds, il se pourait que tu ai déjà fait tout ca, en attendant, j'espere que ca pourrat donner quelques idées |
||||
|
|
00
|
|
|
#17 |
|
Membre Expert
![]() David GuillotChef de projet en SSII Inscription : mars 2004 Messages : 879 ![]() |
wow !!! impressionnant !!!
doof pour ta contribution !!!en effet certaines choses sont deja faites mais comme je suis justement en train de me pencher sur le calcul du numero du jour, ton systeme de calendrier julien va m'etre tres utile ;-) si ça ne te derange pas, je vais juste changer les noms des variables pour que tout soit en français ;-) encore pour le temps et l'energie depensés ;-)ps : ta fonction getWeekNumber() doit etre foireuse, car ton code est le meme que le mien, et par exemple pour le lundi 27/12/2004, ça renvoie 52 alors qu'on sera en semaine 53... je ne sais pas encore comment je vais resoudre ça, mais ça doit etre faisable ;-)
__________________
Avant de poser une question ici : ![]() Après résolution de votre question : un clic sur , un et un vote pour les personnes qui vous ont aidé |
|
00
|
|
|
#18 |
|
Membre actif
![]() Inscription : août 2003 Messages : 159 ![]() |
Je me suis posé la question pour recuperer le no de semaine justement. C'est pas la fonction qui est foireuse en elle meme, c'est que je ne sais pas quelle reference prendre dans le cas d'une semaine a cheval sur 2 années. Si l'année commence 1 dimanche, considere-t-on ce dimanche comme la semaine 1 sinon, a partir de quel jour ? Donc c'est corrigeable -a condition- de savoir exactement (officiellement disont) dans quel cas on commence le comptage de semaine (ce que je ne sais pas du tout) !! |
|
|
00
|
|
|
#19 |
|
Membre actif
![]() Inscription : août 2003 Messages : 159 ![]() |
Oops, j'avais mal compris le probleme. En effet, il y a un décalage par rapport au jours ou commence l'année avec ce systeme, donc ceil(($day) / 7) changerat de semaine à chaque fois ce jour.
Il faudrait donc faire ceil(($day+$decalage_avec_le_dimanche) / 7) Le probleme est que dans ma fonction, je calculais par rapport au numero du jour de l'année et que donc c'est pas possible de connaitre directement le decalage a partir de ce chiffre. Encore une fois, le jour julien est là pour resoudre le probleme apparement : http://www.auduteau.net/calendar/cal5.shtml ( j'ai déjà pris des formules sur ce site ). Je ferais une nouvelle version basée sur le jour julien demain [edit] => corriged, en se basant sur le jour julien !! [/edit] |
|
|
00
|
|
|
#20 |
|
Membre actif
![]() Inscription : août 2003 Messages : 159 ![]() |
Je viens de réediter, j'ai supprimé la fonction dateToWord() pour la remplacer par 2 fonctions distinctes mounthWord() et dayWord() qui utilisent la configuration locale pour afficher les noms de jours et de mois. Comme ca, pour faire du multilingue, ca devient easy. Si le serveur ne connait pas une langue, on peut utiliser ses propres tableaux à la place. Toutes les autres fonctions en profitent bien sur.
J'ai aussi arrangé __getDate() qui accepte maintenant des dates negatives, ou erronées (ex : 33/12/2004) dans ce cas, la date est recalculée à la volée, ce qui lui donne une grande souplesse, comme pour mktime() de php. Ca permet aussi de gerer tres facilement les décalages horaire. voilà voilà. |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com