Convertir format date de Excel en format date ( YYYY-MM-DD)

Résolu
ksomda Messages postés 37 Statut Membre -  
ksomda Messages postés 37 Statut Membre -
Bonjour tout le monde,
je viens vers vous parce que j'ai un soucis. Mon soucis est le suivant: j'importes un fichier excel contenant des champs de dates. l'importation marche. Je lies dans ce fichier excel importé à l'aide du plugin PHPExcel. Toutefois, les champs des dates sont toutes lues en php comme des nombres à titre d'exemple 15 Juillet 2016 écrit dans Excel devient 42566 lors de la récupération des données dans mon code php. J'ai essayé les méthodes de " date ", mktime, DateTime::createFromFormat() mais la date me renvoie soit 01 Janvier 1970 soit des messages d'erreurs. S'il vous plait pouvez m'aider.

3 réponses

  1. Utilisateur anonyme
     
    Les dates sont sous quels formats dans le fichier Excel, car là je vois pas à quoi correspond une date de type Excel. Ensuite le fichier à quel extension? Car la PHP peut parser du CSV directement.
    0
    1. ksomda Messages postés 37 Statut Membre
       
      le fichier à l'extension .xlsx.
      Vu que j'utilise PHPExcel pour lire, c'est ce que j'ai trouvé avec un développeur

      $name2 = PHPExcel_Style_NumberFormat::toFormattedString($objWorksheet->getCellByColumnAndRow(2, $row)->getValue(), 'YYYY-MM-DD');
      0
  2. Thorak83 Messages postés 1140 Statut Membre 156
     
    Bonjour,

    Le chiffre 42566 représente l'écart du nombre de jours entre le 01/01/1900 et le 15/07/2016(qui est le point de départ des dates dans Excel).
    0
  3. Thorak83 Messages postés 1140 Statut Membre 156
     
    Voici
    $datephp= date('d/m/Y', ($dateExcel - 25569)*24*60*60 );


    ex: $dateExcel = 42566

    Le timestamp de excel est le nombre de jours écoulé depuis le 01/01/1900.
    Le timestamp de PHP est le nombre de jours écoulé depuis le le 01/01/1970

    Il faut donc retiré le nombre de jours écoulé entre le 01/01/1900 et le 01/01/1970 (25569) au timestamp excel, puis le multiplié par 24*60*60 pour avoir cette valeur en secondes.
    0
    1. ksomda Messages postés 37 Statut Membre
       
      d'accord merci pour ton apport Thorak83
      0