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 :

Effectuer un substring sur une date


Sujet :

C++

  1. #1
    Membre habitué Avatar de legrandse
    Homme Profil pro
    Responsable de service informatique
    Inscrit en
    Décembre 2010
    Messages
    350
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Responsable de service informatique

    Informations forums :
    Inscription : Décembre 2010
    Messages : 350
    Points : 149
    Points
    149
    Par défaut Effectuer un substring sur une date
    Bonjour à tous,

    Je souhaite effectuer un substring sur une date afin d'isoler chaque chiffres.
    Exemple : 2016-09-13 15:30

    => Sur simplement l'année 2016 comment peut-on retourner "2" ou "0" ou "1" ou "6" ?

    J'ai ce bout de code qui est la base pour afficher une date.

    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
    #include <ctime>
    #include <iostream>
    using namespace std;
     
    int main() {
        time_t rawtime;
      struct tm * timeinfo;
      char buffer[80];
     
      time (&rawtime);
      timeinfo = localtime(&rawtime);
     
      strftime(buffer,80,"%d-%m-%Y %I:%M:%S",timeinfo);
      std::string str(buffer);
     
      std::cout << str;
      return 0;
    Merci pour votre aide.

  2. #2
    Expert éminent sénior

    Avatar de dragonjoker59
    Homme Profil pro
    Software Developer
    Inscrit en
    Juin 2005
    Messages
    2 031
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Software Developer
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2005
    Messages : 2 031
    Points : 11 379
    Points
    11 379
    Billets dans le blog
    10
    Par défaut
    Si tu utilises un std::tm, pourquoi passer par une chaine, pour récupérer l'année (qui se trouve déjà dans le std::tm)
    Si vous ne trouvez plus rien, cherchez autre chose...

    Vous trouverez ici des tutoriels OpenGL moderne.
    Mon moteur 3D: Castor 3D, presque utilisable (venez participer, il y a de la place)!
    Un projet qui ne sert à rien, mais qu'il est joli (des fois) : ProceduralGenerator (Génération procédurale d'images, et post-processing).

  3. #3
    Membre habitué Avatar de legrandse
    Homme Profil pro
    Responsable de service informatique
    Inscrit en
    Décembre 2010
    Messages
    350
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Responsable de service informatique

    Informations forums :
    Inscription : Décembre 2010
    Messages : 350
    Points : 149
    Points
    149
    Par défaut
    Pour être honnête, je n'en sais rien.

    Je dois écrire un petit script dans un Arduino sauf que je croyais pouvoir le faire en python alors que la carte demande du C++

    Donc je me retrouve avec 2 solutions:
    soit je commence l'apprentissage du C++ juste pour qques lignes qui me serviront qu'une seule fois.
    soit je demande sur le forum si on sait m'aider à faire l'équivalent de mon script python en C++.


  4. #4
    Expert éminent sénior

    Avatar de dragonjoker59
    Homme Profil pro
    Software Developer
    Inscrit en
    Juin 2005
    Messages
    2 031
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Software Developer
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2005
    Messages : 2 031
    Points : 11 379
    Points
    11 379
    Billets dans le blog
    10
    Par défaut
    Donc quel est ton objectif final?
    Parce que std::tm contient toutes les informations, à toi d'en faire ce que tu veux.
    Si vous ne trouvez plus rien, cherchez autre chose...

    Vous trouverez ici des tutoriels OpenGL moderne.
    Mon moteur 3D: Castor 3D, presque utilisable (venez participer, il y a de la place)!
    Un projet qui ne sert à rien, mais qu'il est joli (des fois) : ProceduralGenerator (Génération procédurale d'images, et post-processing).

  5. #5
    Membre habitué Avatar de legrandse
    Homme Profil pro
    Responsable de service informatique
    Inscrit en
    Décembre 2010
    Messages
    350
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Responsable de service informatique

    Informations forums :
    Inscription : Décembre 2010
    Messages : 350
    Points : 149
    Points
    149
    Par défaut
    Mon objectif est de créer un algorithme à partir de la date du jour

    substring std::tm 0,1
    +
    substring std::tm 1,1
    +
    substring std::tm 2,1
    +
    substring std::tm 3,1
    +
    ...

  6. #6
    Membre expert
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    1 415
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mars 2007
    Messages : 1 415
    Points : 3 156
    Points
    3 156
    Par défaut
    Mais comment le résultat va être utilisé ? As-tu besoin de la valeur numérique, ou de sa représentation sous forme de chaîne ?
    Find me on github

  7. #7
    Membre habitué Avatar de legrandse
    Homme Profil pro
    Responsable de service informatique
    Inscrit en
    Décembre 2010
    Messages
    350
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Responsable de service informatique

    Informations forums :
    Inscription : Décembre 2010
    Messages : 350
    Points : 149
    Points
    149
    Par défaut
    Si je complète mon exemple le but c'est de demander à l'utilisateur d'entrer un code qui est basé sur la date et heure du jour.

    Voici une partie de mon code python très simplifié:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    today = datetime.now()
     
    y = str(today.year)
    y0 = int(y[0:-3])
    y1 = int(y[1:-2])
    y2 = int(y[2:-1])
    y3 = int(y[3:])
     
    code = str(y0+y1+y2+y3)
     
    hello = input("Bonjour, veuillez svp introduire le code:")
        if code == hello :
            print("Code correct")

  8. #8
    Rédacteur/Modérateur


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

    Informations professionnelles :
    Activité : Network game programmer

    Informations forums :
    Inscription : Juin 2010
    Messages : 7 115
    Points : 32 967
    Points
    32 967
    Billets dans le blog
    4
    Par défaut
    Tu peux toujours utiliser Cython pour convertir ton Python en C sinon.
    Mais bon dans l'absolu, tu fais surtout une utilisation abusive des string et ce code aurait tout intérêt à utiliser des integers.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    today = datetime.now()
     
    y = str(today.year)
    y0 = int(y[0:-3])
    y1 = int(y[1:-2])
    y2 = int(y[2:-1])
    y3 = int(y[3:])
     
    code = str(y0+y1+y2+y3)
    ça c'est un peu n'importe quoi, ça se simplifie simplement en code = str(datetime.now().year)
    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.

  9. #9
    Membre expert
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    1 415
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mars 2007
    Messages : 1 415
    Points : 3 156
    Points
    3 156
    Par défaut
    Citation Envoyé par Bousk Voir le message
    ça c'est un peu n'importe quoi, ça se simplifie simplement en code = str(datetime.now().year)
    Bousk, tu as lu un peu vite tout de même ! Ici, legrandse veut faire la sommes des digits.

    Ca se simplifie salement (usage de chaînes) comme ça :

    Code python : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    import datetime
    from functools import *
     
    today = datetime.datetime.now()
    code = sum(map(int,str(today.year)))
    print(code)

    Ca se simplifie efficacement comme ça :

    Code python : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    import datetime
     
    def sum_of_digits(remain,actual_sum=0):
      return actual_sum if remain == 0 else sum_of_digits(remain // 10, actual_sum + remain % 10)
     
    today = datetime.datetime.now()
    print(sum_of_digits(today.year))

    Et du coup en C++ c'est quand même facile à traduire :

    Code cpp : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    int sum_of_digits(int remain, int actual_sum = 0) {
      return remain == 0 ? actual_sum : sum_of_digits(remain / 10, actual_sum + remain % 10);
    }
     
    // ...
     
    std::cout << sum_of_digits(1900 + my_tm.tm_year) << std::endl;

    En bref, à partir du moment du tu as un std::tm, profite-en pour l'exploiter numériquement, et ne reconvertit en chaîne que lorsque tu as fini. Ce sera beaucoup plus efficace.
    Find me on github

  10. #10
    Rédacteur/Modérateur


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

    Informations professionnelles :
    Activité : Network game programmer

    Informations forums :
    Inscription : Juin 2010
    Messages : 7 115
    Points : 32 967
    Points
    32 967
    Billets dans le blog
    4
    Par défaut
    Citation Envoyé par jblecanard Voir le message
    Bousk, tu as lu un peu vite tout de même ! Ici, legrandse veut faire la sommes des digits.
    Ha ué, bien vu, tellement rare et chelou comme besoin

    Cela dit, suffirait de divisions entières successives plutôt que de passer par de la string et substring. Valable en Python également btw.
    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.

  11. #11
    Membre habitué Avatar de legrandse
    Homme Profil pro
    Responsable de service informatique
    Inscrit en
    Décembre 2010
    Messages
    350
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Responsable de service informatique

    Informations forums :
    Inscription : Décembre 2010
    Messages : 350
    Points : 149
    Points
    149
    Par défaut
    Merci les gars pour votre aide et éclaircissements.

    Je débute en python et j'ai tendance à ne jamais me faciliter la vie

    Le C++ je sens bien que je n'y couperais pas un jour ou l'autre.

    @+

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

Discussions similaires

  1. substr dans un where sur une date '2010-04-30 12:11:12'
    Par sinifer dans le forum Requêtes
    Réponses: 6
    Dernier message: 03/05/2010, 14h52
  2. requette sur une date
    Par AlphonseBrown dans le forum Langage SQL
    Réponses: 13
    Dernier message: 04/04/2005, 12h41
  3. Travailler sur une date
    Par HqX dans le forum Langage SQL
    Réponses: 11
    Dernier message: 05/10/2004, 15h54
  4. Problème lors d'un Update sur une date
    Par Nany dans le forum ASP
    Réponses: 3
    Dernier message: 19/05/2004, 22h37
  5. [SQL] Conditions sur une date dans une requete
    Par poufouille dans le forum Bases de données
    Réponses: 4
    Dernier message: 17/03/2004, 14h25

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