DATETIMECONVERTER

cptpingu Messages postés 3837 Date d'inscription dimanche 12 décembre 2004 Statut Modérateur Dernière intervention 28 mars 2023 - 15 août 2011 à 17:03
guill76 Messages postés 193 Date d'inscription mercredi 24 août 2005 Statut Membre Dernière intervention 3 juin 2016 - 30 août 2011 à 13:25
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/53468-datetimeconverter

guill76 Messages postés 193 Date d'inscription mercredi 24 août 2005 Statut Membre Dernière intervention 3 juin 2016
30 août 2011 à 13:25
au temps pour moi alors : le man date n'est pas forcément explicite du coup
cptpingu Messages postés 3837 Date d'inscription dimanche 12 décembre 2004 Statut Modérateur Dernière intervention 28 mars 2023 123
30 août 2011 à 11:55
>> j'ai privilégié la rapidité d'écriture à la rigueur
Sans doute, mais écrire "const std::string&" au lieu de "string" n'est pas si handicapant, non ?

>> sinon ctime est largement suffisant et simple pour ça..
Tout dépend de si tu veux faire du C ou du C++. On évite de mélanger C et C++ à moins qu'il y ait une bonne raison. Avec Boost::datetime, il n'y en a pas :)

>> ... pour la commande unix date que j'ai consultée avant d'écrire ce prog,
Attention de bien lire la doc avant d'affirmer quelque chose:

>> elle peut convertir la date courante en timestamp mais ne peut convertir aucune autre date
Mouais...
http://www.christopher.compagnon.name/sitewww/shell-date.html

>> de même elle ne peut convertir aucun timestamp en date
Ah bon ? Et un:
$ date -d @1314697811
Tue Aug 30 11:50:11 CEST 2011

A noter que ces remarques ne remettent pas en cause la qualité de ton programme. C'est d'ailleurs très propre d'avoir fait un man.
guill76 Messages postés 193 Date d'inscription mercredi 24 août 2005 Statut Membre Dernière intervention 3 juin 2016
30 août 2011 à 11:33
Sur le passage des arguments par référence ( je voulais écrire par copie ) => désolé
guill76 Messages postés 193 Date d'inscription mercredi 24 août 2005 Statut Membre Dernière intervention 3 juin 2016
30 août 2011 à 11:28
Merci pour ces remarques constructives,
Sur le passage des arguments par référence : j'ai privilégié la rapidité d'écriture à la rigueur (je ne développe pas tous les jours en c voilà la raison), mais j' en suis tout à fait conscient, de même pour le "using namespace std" , pour la différence entre it++ et ++it, j'avais oublié cette subtilité et donc merci pour ce rafraîchissement.

Pour les programmes similaires existants:
j'ai de vagues connaissances de boost mais je ne connaissais pas la bibli datetime, je vais aller y jeter un oeil pourquoi pas! sinon ctime est largement suffisant et simple pour ça..

autrement pour la commande unix date que j'ai consultée avant d'écrire ce prog, elle peut convertir la date courante en timestamp mais ne peut convertir aucune autre date, de même elle ne peut convertir aucun timestamp en date.. voilà
cptpingu Messages postés 3837 Date d'inscription dimanche 12 décembre 2004 Statut Modérateur Dernière intervention 28 mars 2023 123
15 août 2011 à 17:03
>> Cette petite application en ligne de commande sans prétention avait pour but premier de convertir les dates en timestamp et vice versa sous unix, je l'ai ensuite adaptée pour convertir 1 format de date en 1 autre format de date avec la possibilité de manipuler des opération sur les différentes unités de temps au passage.

Tu sais que la commande "date" sous Unix, fait déjà tout ça ? En C++, il existe aussi la bibliothèque boost::date_time qui le fait aussi.

>> expérimenter la librairie

La bibliothèque

>> getopt.h
boost::program_option est bien meilleur.

Passons à la critique du code:
- Évite les "using namespace", voir: http://0217021.free.fr/portfolio/axel.berardino/articles/bon-usage-using-namespace
- Parenthèses non nécessaires pour les return. Ex: return (it!=mm.end()); => return it != mm.end();
- Au lieu de:
cerr<<"Usage: "<second!=s2) it++; // Et si à force de faire it++, on a it > mm.end() ?
return (it!=mm.end()); // Pourquoi y a-t-il deux return (it!=mm.end()) à la suite ?
return (it!=mm.end()); // Pourquoi y a-t-il deux return (it!=mm.end()) à la suite ?
}
Rejoignez-nous