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

Résolu/Fermé
ksomda Messages postés 36 Date d'inscription lundi 17 février 2014 Statut Membre Dernière intervention 2 septembre 2016 - 30 août 2016 à 12:49
ksomda Messages postés 36 Date d'inscription lundi 17 février 2014 Statut Membre Dernière intervention 2 septembre 2016 - 2 sept. 2016 à 16:04
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.
A voir également:

3 réponses

Utilisateur anonyme
30 août 2016 à 18:39
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
ksomda Messages postés 36 Date d'inscription lundi 17 février 2014 Statut Membre Dernière intervention 2 septembre 2016
2 sept. 2016 à 14:51
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
Thorak83 Messages postés 1051 Date d'inscription jeudi 20 juin 2013 Statut Membre Dernière intervention 22 décembre 2017 156
2 sept. 2016 à 15:08
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
Thorak83 Messages postés 1051 Date d'inscription jeudi 20 juin 2013 Statut Membre Dernière intervention 22 décembre 2017 156
2 sept. 2016 à 15:34
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
ksomda Messages postés 36 Date d'inscription lundi 17 février 2014 Statut Membre Dernière intervention 2 septembre 2016
2 sept. 2016 à 16:04
d'accord merci pour ton apport Thorak83
0