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

MATLAB Discussion :

Boucle matlab pour les dates : problème de format


Sujet :

MATLAB

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2012
    Messages
    200
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2012
    Messages : 200
    Par défaut Boucle matlab pour les dates : problème de format
    Bonjour à tous, je souhaite mettre une date de fin, une date d'arrivé et que ça augmente de 1 jours à chaque fois.

    Bon ça fonctionne, le problème c'est que j'aimerais retrouver un formart du même type c'est à dire : yyyy-mm-dd

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    start_date = 20131213; %Date de départ 
    end_date = 20141215; %Date de fin 
    formatOut = 'yyyy/mm/dd'; %Format de la date 
    hr_step=datenum(0,0,1,0,0,0); %Nombre de jours à augmenter 
    date_array=datenum(start_date):hr_step:datenum(end_date);  %Pour écrire toutes les dates entres les deux 
    cellstr(datestr(date_array,formatOut,'local')) %sépare les cellules et ressort les dates
    Le problème c'est qu'en output matlab me donne :

    Pour les 3 dernières

    5144/10/07'
    '5144/10/08'
    '5144/10/09'

    Au lieu de :

    20141213
    20141214
    20141215

    Ou même d'un format yyyy-mm-dd ou yyy/mm/dd

    Merci pour votre aide

  2. #2
    Membre Expert
    Inscrit en
    Août 2010
    Messages
    1 124
    Détails du profil
    Informations forums :
    Inscription : Août 2010
    Messages : 1 124
    Par défaut
    Bonjour,

    L'entier 20131213 n'est pas la date que tu penses.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    start_date= datenum('2013/12/13','yyyy/mm/dd'); % ceci est la représentation en entier de la date que tu cherches
    une fois que tu as des entier, pour les incrémenter de 1, il suffit de faire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    dts= datenum('2013/12/13','yyyy/mm/dd') : 1 : datenum('2014/12/13','yyyy/mm/dd');
    datestr(dts)

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2012
    Messages
    200
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2012
    Messages : 200
    Par défaut
    Merci pour ta réponse,

    Le problème c'est que j'ai plein de fichier qui on comme nom les dates yyyymmdd, je souhaite ouvrir dans matlab les fichiers compris entre la date de départ et d'arrivée.

    Donc (pour date_array), je veux faire une liste de date entre une date de départ et une date d'arrivé.

    Ensuite faire une boucle pour lui dire d'aller chercher pour chaque date, le fichier portant le nom de la date stockée (dans date_array) et l'ouvrir dans matlab.

    Donc je dois garder le format yyyymmdd et ajouter 1 jours à chaque fois.

    Ce n'est pas possible ?

  4. #4
    Membre Expert
    Inscrit en
    Août 2010
    Messages
    1 124
    Détails du profil
    Informations forums :
    Inscription : Août 2010
    Messages : 1 124
    Par défaut
    NB: j'ai modifié mon post précédent avant ta réponse.

    Tu peux très bien travailler avec ce format, mais en tant que chaines de caractères et non pas d'entiers. il faut les convertir en entier via datenum, incrémenter, et repasser en chaines de caractères, par exemple

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    dts= datenum('20131213','yyyymmdd') : 1 : datenum('20141213','yyyymmdd');
    datestr(dts,'yyyymmdd');
    % NB j'ai changé le format depuis l'exemple précédent

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2012
    Messages
    200
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2012
    Messages : 200
    Par défaut
    Parfait merci beaucoup ça fonctionne parfaitement.

    J'aurais besoin d'une petite astuce car je galère sur ça depuis un moment :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    clear all 
    delimiterIn = '@'; %Delimiteur des séries d'exposition 
    start_date = '20131213'; %Utilisateur entre la date de début de la série 
    end_date = '20141213'; %Entre la date de fin 
    dts= datenum(start_date,'yyyymmdd') : 1 : datenum(end_date,'yyyymmdd'); %Converti les séries en date 
    nom_fichier= datestr(dts,'yyyymmdd'); %Repasse les séries en string 
    
    for i = 1:numel(nom_fichier) %Nombre de jours dans la liste nom_fichier 
    date_expos_fichier_selectionne=nom_fichier(i,:); %Stock le nom du fichier pour la date 
    chemin_fichier_ouvrir=fullfile(repertoire_daughter_unziped_files,date_expos_fichier_selectionne); %Chemin du fichier ayant le nom de la date 
    date_expos_fichier_selectionne = importdata(chemin_fichier_ouvrir, delimiterIn); %Ouvre le fichier ayant la date selectionnée 
    end
    Le problème vient de la ligne en gras, en effet, je souhaite que lorsque le fichier s'ouvre dans matlab il porte le nom de la date contenu dans 'date_expos_fichier_selectionne" le problème c'est que ça ne fonctionne pas.

    Une idée? merci d'avance

  6. #6
    Membre Expert
    Inscrit en
    Août 2010
    Messages
    1 124
    Détails du profil
    Informations forums :
    Inscription : Août 2010
    Messages : 1 124
    Par défaut
    Qu'est ce qui ne fonctionne pas ? Une erreur, un résultat bizarre ?

Discussions similaires

  1. [XL-2007] Format texte pour les dates est erroné
    Par Tomeloale dans le forum Excel
    Réponses: 3
    Dernier message: 19/02/2014, 10h32
  2. Requêtes SQL pour les Dates et numériques
    Par Ramage03 dans le forum Langage SQL
    Réponses: 3
    Dernier message: 23/03/2006, 17h26
  3. Filtre pour les dates
    Par aliwassem dans le forum Bases de données
    Réponses: 11
    Dernier message: 21/02/2006, 11h48
  4. implanter des calendriers pour les dates
    Par student007 dans le forum Access
    Réponses: 7
    Dernier message: 24/10/2005, 19h24
  5. [JMeter] Problème avec la boucle infinie pour les tests
    Par zegreg dans le forum Tests et Performance
    Réponses: 1
    Dernier message: 05/10/2005, 11h41

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