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 ?
Réponses
Trop de publicités?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".
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.
- Réponses précédentes
- Plus de réponses