UNIX TIME CONVERTER (UTC)

Signaler
Messages postés
341
Date d'inscription
mercredi 17 juillet 2002
Statut
Membre
Dernière intervention
14 juillet 2011
-
Messages postés
249
Date d'inscription
lundi 9 novembre 2009
Statut
Membre
Dernière intervention
2 mars 2020
-
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/47486-unix-time-converter-utc

Messages postés
249
Date d'inscription
lundi 9 novembre 2009
Statut
Membre
Dernière intervention
2 mars 2020

Salut,
Puisque vous semblez bien informé au sujet des conversions de dates, j'ai une question à vous soumettre:
Je dois convertir un TimeStamp en date hh mm ss mais je n'arrive pas à savoir comment est construit ce TimeStamp!
exemple: 3375177394 qui devrait correspondre à environ 14/12/2010 à 18h10
J'ai essayé pas mal de chose mais sans résultat!
Qui peut m'aider?

Merci d'avance,
PhilLu
Messages postés
13
Date d'inscription
lundi 23 juin 2003
Statut
Membre
Dernière intervention
27 septembre 2008

@yoman64 : tu as tout a fait raison sur le fait que je n'aurai peut être pas du poster cette source. La prochaine fois je ferai plus attention ;)

@yopai_v : merci beaucoup pour cette analyse et ces explications !
Messages postés
48
Date d'inscription
jeudi 7 septembre 2006
Statut
Membre
Dernière intervention
21 avril 2010

Juste quelques petites remarques pour enfoncer un peu le clou avec mon grain de sel.

Concernant l'appel à date() :
- depuis PHP 5.1, penser à appeler date_default_timezone_set() (ou à positionner la variable d'env. TZ) dans l'initialisation du script
- dans l'écriture date('Y-m-d H:i:s', time())" lue dans le commentaire de bentom32390
- d'une part, ça ne correspond pas au but de la source (qui est de convertir un timestamp donné)
- d'autre part le 2e paramètre est inutile dans ce cas-là (c'est la valeur par défaut du paramètre)

Concernant le code :
- je rejoins tout le monde : lire la doc et parcourir les classes Pear devrait te donner un aperçu correct de ce qui existe et qu'il n'y a pas besoin de redévelopper.
- du coup, j'ai l'impression que personne n'a regardé ta source en détail. Je vais donc t'indiquer ce qui, d'après-moi, est mal écrit dans ton code.
Ce qui me choque en première lecture, c'est que tu as programmé une librairie de fonctions, pas une classe. De 2 choses l'une :
* soit une instance de ta classe représente une date unique. Alors les différentes méthodes (afficher, convertir)n'ont pas besoin de paramètre, et doivent se baser sur les propriétés de ton objet (initialisées par le constructeur)
A l'appel :
date1 = new dateUTC(12345678)
date1->afficher();
date2 = new dateUTC(987654321)
date2->afficher();

* soit ta classe gère toutes les dates. Alors le constructeur ne prend pas de paramètres, et les méthodes afficher et convertir peuvent être des méthodes statiques
dateHandler::afficher(12345678);
dateHandler::afficher(987654321);
ta classe peut aussi être un singleton (cherche sur Google), ce qui donnerait à l'appel :
dateHandler = dateUTCHandler::getInstance();
dateHandler->afficher(12345678);
dateHandler->afficher(12345678);

Ensuite, la méthode "convertir" est inutile. Elle porte d'ailleurs mal son nom, puisqu'elle génère un affichage (ce qui devrait être le rôle d'"afficher").
Je serais toi, c'est donc convertir() qui devrait faire tout le travail, mais *retourner* (return) la valeur; le corps d'afficher() serait alors { echo $this->convertir(...); }

Enfin, ta méthode est beaucoup trop écrite de manière itérative.
N'hésite pas à découper ton algorithme en sous-méthodes :
- tu y gagneras en lisibilité
- cela permettra de surcharger facilement ta classe

Une dernière chose, prend l'habitude de toujours mettre les accolades pour un if.
Le jour où tu écriras :
if (je_suis_sur_de vouloir_formater)
format;

et que machinalement, tu ajouteras une ligne de debug :
if (je_suis_sur_de vouloir_formater)
log("formatage");
format;

tu regretteras de ne pas les avoir mises !
Messages postés
592
Date d'inscription
samedi 19 janvier 2002
Statut
Membre
Dernière intervention
4 décembre 2008

Salut,

Je reprends l'avis des autres, pourquoi avoir fait une classe alors que php dispose en natif d'une bonne dizaine de fonctions pour manipuler les dates et timestamps qui sont évidement beaucoup plus rapides ?

Mis à part que ta classe permet sans doute aux débutants de comprendre un peu mieux ce qu'est un timestamp (dans ce cas ce serait plus un tutoriel qu'une source), je ne vois vraiment pas ce que cela apporte à la communauté de phpcs.

Ne prends pas ça pour des critiques personnelles, je m'interroge seulement sur l'intérêt d'un tel code pour phpcs, parce qu'après tout c'est bien que tu apprennes en faisant ce genre d'exercices, mais pas besoin de tout poster ce qu'on fait ^^ (au moins ce n'est pas un convertisseur d'euros, je te l'accore :P)
Afficher les 14 commentaires