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
250
Date d'inscription
lundi 9 novembre 2009
Statut
Membre
Dernière intervention
4 septembre 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
250
Date d'inscription
lundi 9 novembre 2009
Statut
Membre
Dernière intervention
4 septembre 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)
Messages postés
13
Date d'inscription
lundi 23 juin 2003
Statut
Membre
Dernière intervention
27 septembre 2008

Cette classe n'est pas là pour réinventer la manipulation de format de date.

En fait, cette classe me permet de convertir les dates d'inscription des utilisateurs d'un Simple Machines Forum vers WordPress car j'écrit un module de conversion des utilisateurs de l'un à l'autre.

Mais c'est vrai qu'elle n'est pas à utiliser ailleurs puisqu'il existe déjà tout ce qu'il faut.
C'est plutôt un exercice intéressant pour ma part.
Messages postés
488
Date d'inscription
samedi 5 avril 2003
Statut
Membre
Dernière intervention
31 mars 2009
4
Salut,

Dommage que tu réinventes la roue et en moins bien. PHP 5 intègre nativement une classe de manipulation de format de date à travers des objets.

Sinon il y'a plus simple pour faire de la conversion de date :

<?php
echo strftime('mon format', strtotime('2008-08-03 12:45:21'));
?>

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

Ah ok, merci pour la précision.
Messages postés
341
Date d'inscription
mercredi 17 juillet 2002
Statut
Membre
Dernière intervention
14 juillet 2011
12
La classe n'est pas plus précise ; elle affiche simplement l'heure UTC, alors que la fonction 'date()' affiche l'heure locale.
Messages postés
25
Date d'inscription
mercredi 28 novembre 2007
Statut
Membre
Dernière intervention
21 février 2009

sa m'étonne vérifie bien avec heure que ta sur ton
sa affiche heure exacte
Messages postés
13
Date d'inscription
lundi 23 juin 2003
Statut
Membre
Dernière intervention
27 septembre 2008

En effet date('Y-m-d H:i:s', time()); le fait automatiquement, mais pour un entrainement c'est sympa.

Et puis par exemple, ce code n'est pas tout à fait correct :
echo date('Y-m-d H:i:s', 1217236577); renvoye 2008-07-28 11:16:17

Alors que
new dateWP(1217236577); renvoye 2008-07-28 09:16:17

La classe est donc plus précise sur le coup.
Messages postés
56
Date d'inscription
mercredi 4 juin 2008
Statut
Membre
Dernière intervention
17 octobre 2009

J'ai la même critique a te faire que se kon di les autres!

Mais je doit avouer que c'est un bon entrènement au classe et aux variables quand même! Mais dsl je n'est pas tester!
Messages postés
182
Date d'inscription
jeudi 20 mai 2004
Statut
Membre
Dernière intervention
22 octobre 2010

Salut ...

Ben tout est dit ... désolé ....
Messages postés
25
Date d'inscription
mercredi 28 novembre 2007
Statut
Membre
Dernière intervention
21 février 2009

bonjours

je trouve que tu tes compliquer la vie avec juste un ligne on arrive a la même chose:

date('Y-m-d H:i:s', time());

et la date et converti
Messages postés
341
Date d'inscription
mercredi 17 juillet 2002
Statut
Membre
Dernière intervention
14 juillet 2011
12
Bonjour,

Je ne suis pas certain d'avoir tout compris. Mais s'il ne s'agit que de transformer un timestamp en date, il me semble que
date('Y-m-d H:i:s', $timestamp)
devrait suffire, non ?