IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C++ Discussion :

Fonction renvoyant date et heure en C++


Sujet :

C++

  1. #1
    Membre averti
    Homme Profil pro
    Sans emplois
    Inscrit en
    Août 2014
    Messages
    19
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Belgique

    Informations professionnelles :
    Activité : Sans emplois
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2014
    Messages : 19
    Par défaut Fonction renvoyant date et heure en C++
    Bonjour/Bonsoir à toutes et à tous.

    Voilà, comme dit dans le titre, je cherche à créer une fonction qui me renverrais la date et l'heure au moment de l'exécution de la dite fonction.

    J'ai trouvé ce code en cherchant sur le net mais il me fait une erreur que je ne comprend pas trop bien.

    J'ai bien sur, plus ou moins, compris le fonctionnement de la fonction. Je sais que c'est la fonction en C, mais je trouve pas en C++ (je sais que pour le C++ il faut un include <ctimes>, mais j'ai pas encore vraiment regardé cette piste là).

    Je vous donne le code de la fonction, inutile de me dire que c'est un void, je le sais:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
     
    void coreUtil::isTime()
    {
    	//Renvois l'heure et le jour d'utilisation de la fonction
     
    	/* lire l'heure courante */
    	time_t now = time(NULL);
     
    	/* la convertir en heure locale */
    	struct tm tm_now = *localtime(&now);
     
    	/* Creer une chaine JJ/MM/AAAA HH:MM:SS */
    	char s_now[sizeof "JJ/MM/AAAA HH:MM:SS"];
     
    	strftime(s_now, sizeof s_now, "%d/%m/%Y %H:%M:%S", &tm_now);
     
    	return;
    }
    Et voici l'erreur.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    c:\users\anubisas\dropbox\mes_projets\anucore_wip_1\anucore\anucore\core_utils.cpp(20): error C4996: 'localtime': This function or variable may be unsafe. Consider using localtime_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.
      c:\program files\windows kits\10\include\10.0.10240.0\ucrt\time.h(505): note: voir la déclaration de 'localtime'
    Quelqu'un pourrait il e dire ce qui ne tourne pas rond dans cette fonction et comment je puis renvoyer la valeur trouvée, soit en char ou string?

    Merci d'avance, Anubisas.

  2. #2
    Modérateur

    Avatar de Bktero
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2009
    Messages
    4 493
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juin 2009
    Messages : 4 493
    Billets dans le blog
    1
    Par défaut
    As-tu testée ta fonction ?

    As-tu compris le message de ton compilateur ?

  3. #3
    Membre averti
    Homme Profil pro
    Sans emplois
    Inscrit en
    Août 2014
    Messages
    19
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Belgique

    Informations professionnelles :
    Activité : Sans emplois
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2014
    Messages : 19
    Par défaut
    Citation Envoyé par Bktero Voir le message
    As-tu testée ta fonction ?

    As-tu compris le message de ton compilateur ?
    Avant tout, merci d'avoir répondu. Ensuite, oui, j'ai testé la fonction en question. Sinon, je n'aurais pas eu le message d'erreur.

    Enfin, j'ai traduis le message d'erreur qui me dit que la variable peut être dangereuse et qu'il faudrait que je pense à utiliser la fonction localtime_s.

    Cependant, j'ai essayer plusieurs méthode trouvée en fouillant sur le net mais je ne trouve pas la solution.

    Je continue bien sur mes recherches sur le net. Pour le moment, j'en suis revenu à l'utilisation de ce code qui me donne bien les infos qu'il me faut, voici le code en question:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
     
    void Date()
    {
     
    	SYSTEMTIME Time;
     
    	GetLocalTime(&Time);
     
    	printf("%02d/%02d/%04d ",
    		Time.wDay, Time.wMonth, Time.wYear);
     
    	printf("- %02d:%02d\n",
    		Time.wHour, Time.wMinute);
     
    	return;
     
    }
    Cependant, je ne sais toujours pas intégrer l'information envoyer à printf dans une variable afin de la retourné par la fonction.Pour le moment printf me donne l'impression console "07/01/2017 - 22:57", c'est ça que je souhaiterais mettre dans une variable pour pouvoir le renvoyer à l'appelant de la fonction Date().

    Si j'ai raté quelques chose ou ne suis pas clair, je sais pas quoi faire de plus.

    Mais je remercie toutes personne pouvant m'aider à ce sujet.

  4. #4
    Expert confirmé
    Homme Profil pro
    Ingénieur développement matériel électronique
    Inscrit en
    Décembre 2015
    Messages
    1 599
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur développement matériel électronique
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Décembre 2015
    Messages : 1 599
    Par défaut
    Bonjour,

    Ta fonction doit retourner une chaîne de caractères, hors ta fonction ne retourne rien (void c'est rien).
    Ton code c'est du C à 100%, hors tu veux du C++.
    Tu peux utiliser la fonction localtime_s (standard C11) ou GetLocalTime (standard Windows) ou std::localtime (standard C++)
    En C++ on écrit plutôt:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    #include <ctime>
    #include <sstream>
    #include <string>
    #include <iomanip>
     
    std::string Date()
    {
    	//Renvois l'heure et le jour d'utilisation de la fonction
     
    	/* lire l'heure courante */
    	std::time_t now = std::time(NULL);
     
    	/* la convertir en heure locale */
    	std:: tm tm_now;
    	localtime_s(&tm_now,&now);
     
    	/* Creer une chaine JJ/MM/AAAA HH:MM:SS */
    	std::stringstream ss;
    	ss << std::put_time( &tm_now, "%d/%m/%Y %H:%M:%S" );
     
            /* retourner la chaine */
    	return ss.str();
    }

  5. #5
    Membre averti
    Homme Profil pro
    Sans emplois
    Inscrit en
    Août 2014
    Messages
    19
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Belgique

    Informations professionnelles :
    Activité : Sans emplois
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2014
    Messages : 19
    Par défaut
    Un grand merci à toi dalfab, je viens juste de voir et de tester ton code, il tourne nikel et répond parfaitement à mes attentes. C'est tout simplement génial .

    Je vais pouvoir avancer dans mon logeur un peux plus loin.

    Un grand merci pour vos réponses, il me reste à moduler cela de différente façons afin de renvoyer l'heure seul, la date seul et bien sur les deux selon les besoin du moment.
    Je ne met pas encore le sujet en "résolu" au cas où j'ai de nouvelles demande à faire concernant cette fonction.

  6. #6
    Rédacteur/Modérateur


    Homme Profil pro
    Network game programmer
    Inscrit en
    Juin 2010
    Messages
    7 147
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Canada

    Informations professionnelles :
    Activité : Network game programmer

    Informations forums :
    Inscription : Juin 2010
    Messages : 7 147
    Billets dans le blog
    4
    Par défaut
    Sinon le standard propose maintenant std::chrono::system_clock::now()
    Pensez à consulter la FAQ ou les cours et tutoriels de la section C++.
    Un peu de programmation réseau ?
    Aucune aide via MP ne sera dispensée. Merci d'utiliser les forums prévus à cet effet.

  7. #7
    Membre averti
    Homme Profil pro
    Sans emplois
    Inscrit en
    Août 2014
    Messages
    19
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Belgique

    Informations professionnelles :
    Activité : Sans emplois
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2014
    Messages : 19
    Par défaut
    Voilà, tout est beau, tout est chaud... Mais... Il me reste un problème.

    Bon, j'ai bien ma chaîne qui contient la date et l'heure, maintenant, je voudrais l'utiliser dans une MessageBox() et à l'inscrivant dans la zone cliente de la fenêtre.

    Cependant, après plusieurs essais et sachant que je suis en une configuration UNICODE, j'obtiens les résultats suivant en image:

    Nom : Sans titre.png
Affichages : 3662
Taille : 43,4 Ko

    Ca, c'est en copiant le code trouvé dans le tuto des API dans ici (http://chgi.developpez.com/windows/hdc/).

    Quand j'essaye d'utiliser la variable qui contiens ma date et mon heure, il me dit qu'il y à un problème de conversion de type.

    EDIT:

    Je viens de changer la configuration UNICODE afin de ne plus utiliser le L devant mes chaînes.

    EDIT:

    C'est bon, j'ai trouvé ^^

  8. #8
    Rédacteur/Modérateur


    Homme Profil pro
    Network game programmer
    Inscrit en
    Juin 2010
    Messages
    7 147
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Canada

    Informations professionnelles :
    Activité : Network game programmer

    Informations forums :
    Inscription : Juin 2010
    Messages : 7 147
    Billets dans le blog
    4
    Par défaut
    Pour convertir les chaînes std::codecvt avec std::wstring_convert.
    De nombreux exemples existent sur ce forum-même en cherchant ces termes.
    Pensez à consulter la FAQ ou les cours et tutoriels de la section C++.
    Un peu de programmation réseau ?
    Aucune aide via MP ne sera dispensée. Merci d'utiliser les forums prévus à cet effet.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Dates] fonction date et heure toujours actualisée
    Par Levava dans le forum Langage
    Réponses: 3
    Dernier message: 01/06/2008, 13h43
  2. quelle est la fonction qui retourne la partie date sans heure
    Par solawe dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 29/08/2007, 15h23
  3. Fonction de domaine - Calcul de cumul avec filtre "date et heure".
    Par Fabrice7627 dans le forum Requêtes et SQL.
    Réponses: 8
    Dernier message: 25/08/2007, 05h16
  4. [SQL] Fonction de date et heure
    Par dudezerff dans le forum PHP & Base de données
    Réponses: 8
    Dernier message: 20/07/2007, 09h47
  5. Fonction qui trouve l'heure et la date???
    Par snake77350 dans le forum C
    Réponses: 6
    Dernier message: 28/04/2006, 14h45

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo