probleme de conversion EXCEL vers CSV

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : probleme de conversion EXCEL vers CSV

par blof » 01 janv. 2009, 23:57

J'enleve donc 3600 secondes!
C'est parce qu'en France nous sommes à GMT +01:00 et la fonction date() utilise l'heure locale.

Ta fonction ExcelTodure() et la fonction ExcelToDate() donnerait des résultats erronés avec un serveur réglé sur un autre fuseau horaire.

La fonction gmstrftime() éviterait ce problème :
gmstrftime() se comporte exactement comme strftime() hormis le fait que
l'heure utilisée est celle de Greenwich (Greenwich Mean Time (GMT)).
ça donnerait :
function ExcelToDate($inVar) { 
  return gmstrftime("%Y-%m-%d %H:%M:%S",($inVar - 25569) * 86400);
}
function ExcelTodure($inVar) {
  return gmstrftime("%H:%M:%S",$inVar*86400);
}
// ( c'est un usage détourné de gmstrftime() pour afficher une durée, mais pourquoi pas ... )

par martial » 01 janv. 2009, 13:46

Merci beaucoup Blof!

Tu m'a montré le chemin pour aller vers la lumiére
durées sous EXCEL : 0:00:13
durées en CSV : 0.000150462962962963
avec ta formule j'obtenais : 1:00:13
J'enleve donc 3600 secondes!
function ExcelTodure($inVar) { 
  return date("H:i:s",($inVar*86400)-3600); 
} 
Encore merci

par blof » 01 janv. 2009, 12:42

Tous mes meilleurs voeux ...

La durée ( 0.000150462962962963 ) semble être exprimée en jours.

Donc en multipliant cette valeur par 86400 on obtiendrait la durée en secondes :)

probleme de conversion EXCEL vers CSV

par martial » 31 déc. 2008, 19:18

bonjour à tous et bonnes fêtes!

J'ai crée une page en php afin de convertir des fichiers EXCEL en CSV et de les insérer dans une base de données MYSQL. Tout irait bien si les dates et les durées se convertissaient correctement, mais là probléme :
les dates sous excel sont au format : 19-mars-07 19:12:05
et elles deviennent en CSV : 39160.8000578704
j'ai un peu compris qu'il s'agissait d'un timestamp et j'ai trouvé une petite fonction sur le net permettant de corriger cela
function ExcelToDate($inVar) { 
  return date("Y-m-d H:i:s",(($inVar - 25569)*86400)-3600); 
} 
En revanche pour les durées je bloque
durées sous EXCEL : 0:00:13
durées en CSV : 0.000150462962962963
et là je n'arrive pas à trouver la formule pour reconvertir ce timestamp en secondes!

Merci pour votre aide !