Meilleur timestamp format CSV/Excel?
Je suis en train d'écrire un fichier CSV. J'ai besoin d'écrire horodatages sont exacts, au moins pour la seconde, et de préférence de l'ordre de la milliseconde. Quel est le meilleur format pour l'horodatage dans un fichier CSV, tels qu'ils peuvent être analysés avec précision et sans ambiguïté par Excel avec un minimum d'intervention de l'utilisateur?
- quelle langue utilisez-vous pour créer la sortie?
InformationsquelleAutor | 2009-04-29
Vous devez vous connecter pour publier un commentaire.
Pour la deuxième précision, aaaa-MM-jj HH:mm:ss devrait faire l'affaire.
Je crois que Excel n'est pas très bon avec les fractions de seconde (les perd lors de l'interaction avec un objet COM IIRC).
strftime
, l'équivalent de la chaîne d'argument est"%Y-%m-%d %H:%M:%S"
La suggestion antérieure à utiliser "yyyy-MM-dd HH:mm:ss" est très bien, même si je crois qu'Excel a beaucoup plus fine résolution de temps que cela. Je trouve ce post plutôt crédible (suivre le fil et vous verrez beaucoup d'arithmétique et de l'expérimentation avec Excel), et si c'est correct, vous aurez votre millisecondes. Vous pouvez simplement ajouter sur décimales à la fin, c'est à dire "yyyy-mm-dd hh:mm:ss.000".
Vous devez être conscient que Excel peut ne pas être nécessairement le format des données (sans intervention humaine) d'une telle manière que vous voyez tous de qui de précision. Sur mon ordinateur au travail, quand j'ai créé un fichier CSV avec "yyyy-mm-dd hh:mm:ss.000" de données (à la main en utilisant le bloc-notes), j'obtiens un "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] véhiculée dans les cellules, sans intervention humaine, vous pouvez diviser votre timestamp en date partie et une fois partie, avec le temps, seulement la partie de la seconde. Il me semble que Excel veut vous donner au plus trois visibles "niveaux" (où les fractions de seconde sont leur propre niveau) dans une cellule donnée, et que vous voulez sept: années, mois, jours, heures, minutes, secondes et fractions de seconde.
Ou, si vous n'avez pas besoin de l'horodatage pour être lisible par l'homme, mais vous voulez qu'il soit aussi précis que possible, vous préférerez peut-être juste pour stocker un grand nombre (en interne, Excel est juste en utilisant le nombre de jours, y compris les fractions de jours, étant donné qu'une "époque" date).
[1]Qui se, numérique de l'information. Si vous voulez voir autant d'informations que possible, mais ne se soucient pas de faire des calculs avec elle, vous pourriez faire quelques format Excel va certainement analyser comme une chaîne de caractères, et donc de le laisser seul; par exemple, "aaaammjj.hhmmss.000".
"yyyy-MM-dd hh:mm:ss.000" format ne fonctionne pas dans tous les lieux. Pour certains (au moins danois) "yyyy-MM-dd hh:mm:ss,000" fonctionnera mieux.
Je crois que si vous avez utilisé le
double
type de données, le re-calcul dans Excel serait très bien fonctionner.Aller aux paramètres de langue dans le Panneau de configuration, puis Options de Format, sélectionnez les paramètres régionaux et de voir la date réelle de format pour le paramètres régionaux utilisés par Windows par défaut. Oui, c'format d'horodatage est sensibles aux paramètres régionaux. Excel utilise les formats lors de l'analyse d'un fichier CSV.
Même encore, si les paramètres régionaux utilise des caractères au-delà de l'ASCII, vous aurez à émettre CSV dans le pré-Unicode Windows "ANSI" codepage, par exemple CP1251. Excel n'accepte pas l'UTF-8.
Comme pour les fuseaux horaires. J'ai pour stocker le décalage UTC comme les secondes de l'heure UTC de cette façon, les formules dans Excel/OpenOffice pouvez éventuellement localiser datetimes. J'ai trouvé ceci pour être plus facile que de stocker un nombre qui a un 0 en face de lui. -0900 ne pas analyser bien dans n'importe quel tableur et de l'importer, il était presque impossible de former des gens pour le faire.
comme répondu par user662894.
Je veux ajouter: Ne pas essayer d'obtenir quelques microsecondes à partir, par exemple, SQL Server, datetime2 type de données: Excel ne peut pas gérer plus de 3 fractions de secondes (c'est à dire millisecondes).
Donc "yyyy-mm-dd hh:mm:ss.000000" ne fonctionne pas, et quand Excel est nourris de ce type de chaîne de caractères (à partir du fichier CSV), il va effectuer arrondissement plutôt que troncature.
Cela peut être bien sauf quand microseconde précision des questions, dans ce cas, vous êtes mieux en PAS de déclenchement automatique de type de données de la reconnaissance, mais il suffit de garder la chaîne comme une chaîne de caractères...
Essayez MM/jj/aaaa hh:mm:ss un format.
Code Java pour créer des fichier XML.
Donc, bizarrement excel importer un csv date de différentes manières. Et, affiche différemment selon le format utilisé dans le fichier csv. Malheureusement, la norme ISO 8061 format est une chaîne de caractères. Qui vous empêche d'éventuellement le reformatage de la date vous-même.
Tous ceux qui le font comme une date... contiennent la totalité de l'information... mais ils format différemment... si vous ne l'aimez pas, vous pouvez choisir un nouveau format de la colonne dans excel et il va fonctionner. (Remarque: vous pouvez le dire, il est venu en tant que date/heure valide car elle permettra de justifier à droite... si ce n'est comme une chaîne, il va justifier à gauche)
Voici les formats que j'ai testé:
"aaaa-MM-jj", se présente comme une date bien sûr, lorsqu'il est ouvert dans excel. (aussi, "MM/dd/yyyy" œuvres)
"yyyy-MM-dd HH:mm:ss" affichage par défaut est le format "jj/MM/aaaa HH:mm" (date et l'heure w/out secondes)
"yyyy-MM-dd HH:mm:ss.fff" affichage par défaut est le format "HH:mm:ss" (temps seulement w/secondes)
Je suppose que ISO-format est une bonne idée. (Article de Wikipedia, également avec le temps info)