Convertion format date

Résolu
Bonjour,

Dans ma table j'ai une varible dat_maj qui est sous forme 20090531 (lenght 8, format9.,informat9., numeric) je souhaite avoir le nombre de jour que cela represente...avez vous des idées ?

12 réponses

  1. Salut,

    "je souhaite avoir le nombre de jour que cela représente"

    A partir de quoi? Quelle est la référence pour calculer ce nombre de jour?
    1. 1960, c'est tout?

      Histoire d'être sure, vous voulez calculer le nombre de jours écoulés depuis l'année 1960 à "20090531" et rien de plus?
      1. oui c est ca genre aujourd'hui le 25/06/2012 c'est le 19169éme jour
        cela concerne 26000 lignes
        1. Je ne sais pas si c'est la meilleur façon de faire ni si c'est super exacte (à confirmer), néanmoins :
          //date
          $dat_maj = 20090531;
          //date de référence
          $date1 = mktime(0, 0, 0, 01, 01, 1960);
          //date à comparer 
          $date2 = mktime(0, 0, 0, substr($dat_maj,4,-2), substr($dat_maj,6), substr($dat_maj,0,-4));
          //soustraction des 2 dates
          $soustraction = $date1-$date2;
          //on divise et on arrondi | 1 jours = 86400 secondes
          $nbrjours = round($soustraction/86400);
          //comme la date est antérieure au premier janvier 1970, on supprime le tiret
          echo str_replace('-','',$nbrjours);
          
          1. en faite normalement c'est juste une question de format mais impossible de faire la bascule si je fais dat_jr = today() il me donne 19169 car aujourd'hui est le 19169e depuis le 01/01/1960. Et c'est ce que je veux sauf que les dates à convertir sont sous forme 20120625 format9. informat9. ??
            1. non non l'affichage est 20120625 quand je regarde le parametrage c'est format9. et en informat9.
              1. Excusez moi mais je ne pige plus rien..!

                Quand vous sortez vos dates avec $dat_maj, qu'est ce qui en ressort exactement?
                C'est quoi ce paramétrage format9 et informat9? D'ou ça sort?
                1. j ai trouvé !! j'ai fais en 2 etapes :

                  d'abord : variable x = put(de ma varialble,9.);
                  puis : format variable x YYMMDD10.;
                  enfin : variable y = input(variablex,DDMMYY10.);

                  ce qui donne en prenant :
                  dat_maj = 20090531

                  dat_maj2 = put(dat_maj,9.);
                  format dat_maj2 YYMMDD10. ;
                  dat_maj3 = input(dat_maj2,DDMMYY10.);

                  dat_maj3 = 16699
                  1. Tant mieux pour vous :).

                    Ceci dit, je n'ai absolument rien comprit à votre solution...