126 votes

Meilleur format d'horodatage pour CSV/Excel ?

Je suis en train d'écrire un fichier CSV. J'ai besoin d'écrire des horodatages qui soient précis au moins à la seconde près, et de préférence à la milliseconde près. Quel est le meilleur format pour les horodatages dans un fichier CSV, de sorte qu'ils puissent être analysés avec précision et sans ambiguïté par Excel avec une intervention minimale de l'utilisateur ?

113voto

Joe Points 60749

Pour une deuxième précision, yyyy-MM-dd HH:mm:ss devrait faire l'affaire.

Je crois qu'Excel n'est pas très bon avec les fractions de seconde (il les perd lorsqu'il interagit avec un objet COM IIRC).

23voto

John Y Points 5475

La suggestion précédente d'utiliser "yyyy-MM-dd HH:mm:ss" est bonne, bien que je pense qu'Excel ait une résolution temporelle beaucoup plus fine que cela. Je trouve ce poste plutôt crédible (suivez le fil de discussion et vous verrez beaucoup d'arithmétique et d'expérimentation avec Excel), et si elle est correcte, vous aurez vos millisecondes. Vous pouvez simplement ajouter des décimales à la fin, par exemple "yyyy-mm-dd hh:mm:ss.000".

Vous devez savoir qu'Excel ne formate pas nécessairement les données (sans intervention humaine) de manière à ce que vous puissiez voir toute cette précision. Sur mon ordinateur au travail, lorsque je configure un CSV avec des données "yyyy-mm-dd hh:mm:ss.000" (à la main en utilisant Notepad), j'obtiens "mm:ss.0" dans la cellule et "m/d/yyyy hh:mm:ss AM/PM" dans la barre de formule.

Pour un maximum d'informations[1] transmises dans les cellules sans intervention humaine, vous pouvez diviser votre horodatage en une partie date et une partie heure, avec la partie heure uniquement à la seconde. Il me semble qu'Excel veut vous donner au maximum trois "niveaux" visibles (où les fractions de seconde sont leur propre niveau) dans une cellule donnée, et vous en voulez sept : années, mois, jours, heures, minutes, secondes et fractions de seconde.

Ou, si vous n'avez pas besoin que l'horodatage soit lisible par l'homme mais que vous voulez qu'il soit aussi précis que possible, vous pouvez préférer stocker un grand nombre (en interne, Excel utilise simplement le nombre de jours, y compris les jours fractionnaires, depuis une date "époque").


[1]C'est-à-dire des informations numériques. Si vous voulez voir autant d'informations que possible, mais que vous ne vous souciez pas de faire des calculs avec, vous pouvez créer un format qu'Excel analysera certainement comme une chaîne de caractères et laissera donc tranquille ; par exemple "aaaammjj.hhmmss.000".

14voto

user662894 Points 41

Le format "yyyy-MM-dd hh:mm:ss.000" ne fonctionne pas dans toutes les langues. Pour certains (au moins au Danemark), le format "yyyy-MM-dd hh:mm:ss,000" fonctionnera mieux.

4voto

Peter Perháč Points 8007

Je crois que si vous avez utilisé le double le recalcul dans Excel fonctionnerait parfaitement.

3voto

John Smith Points 1

Allez dans les paramètres de langue du Panneau de configuration, puis dans Options de format, sélectionnez une langue et voyez le format de date réel pour la langue choisie, utilisé par défaut par Windows. Oui, ce format d'horodatage est sensible aux paramètres locaux. Excel utilise ces formats lors de l'analyse du CSV.

De plus, si la locale utilise des caractères au-delà de l'ASCII, vous devrez émettre le CSV dans la page de code "ANSI" pré-Unicode Windows correspondante, par exemple CP1251. Excel n'accepte pas l'UTF-8.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X