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

Résolu
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. 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. 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. 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
    1. 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. d'accord merci pour ton apport Thorak83
        0