2009-04-06 7 views
2

En question Looking for Good CTIME/Unixtime converter J'ai demandé un bon convertisseur de temps basé sur le Web CTIME (Secondes depuis 1 janvier 1970). (Habituellement un entier signé 32 bits).Vous cherchez bon convertisseur FILETIME

J'avais besoin d'un outil où je pourrais entrer une date, et obtenir l'équivalent CTIME. J'ai pu en trouver un, une fois que j'ai réalisé que Unixtime est l'autre nom pour le format. Google était mon ami une fois que je suis arrivé.

Maintenant, que diriez-vous d'un convertisseur FILETIME, qui est plus communément utilisé comme entier signé 64 bits, représentant 100 nanosecondes depuis le 1er janvier 1601. (Qu'est-ce que Active Directory utilise en interne pour le stockage de temps).

Probablement il y a un meilleur mot-clé pour rechercher qui le trouverait pour moi. J'ai un outil qui va me montrer l'heure actuelle dans FILETIME, et je peux faire les maths ailleurs à la main, mais pas tout à fait ce que je cherche de la facilité d'utilisation.

J'ai une fonction qui peut l'utiliser dans le code, mais pas un wrapper pour rendre facilement utilisable dans un format rapide. Le formateur de l'heure de Java le supporte, mais je cherche encore une version bien emballée de cela.

Répondre

11

This tool will convert tous les types de temps en ligne.

+0

Perfect-u-mundo! C'est exactement ce que mes compétences Google m'avaient échoué à trouver! – geoffc

+0

Malheureusement, il ne fournit pas de conversions pour les horodatages Java, qui sont basés sur des millisecondes depuis l'Epoque Unix (1/1/1970 00:00:00 GMT). Sinon, c'est très bien. –

+0

Cela n'inclut pas les fractions de seconde, donc pas entièrement utile à toutes fins. – bialpio

1

Sous Windows, l'heure de base est 1/1/1601. Le FileTime est également enregistré en utilisant 100 Nanosecondes comme mesure. En utilisant VBA, cela vous mènera dans les deux ou trois secondes. (Le -4 est votre décalage UTC actuel) EST est généralement -5 mais comme nos gouvernements ne peuvent pas se réunir et normaliser les commutations DST ou se débarrasser complètement de DST, vous devrez changer cela à votre temps zone.

Le 600000000 convertit 100 nanosecondes en minutes pour éviter les débordements.

De même, reconnaissez que ceci est VBA, donc passez votre valeur Double au format de notation.

Public Function ConvertFileTime(ByVal d As Double) As Date 
    ConvertFileTime = DateAdd("n", (d/600000000) + (60 * -4), #1/1/1601#) 
End Function 

Exemple:

ConvertFileTime (1.2944684916706E + 17)

Cela devrait 15 Mars retourner, 2011 13:48

Questions connexes