2009-04-06 3 views
2

В вопросе Looking for Good CTIME/Unixtime converter Я попросил хороший веб-интерфейс CTIME (Seconds since 1 января 1970 г.). (Обычно 32-битное целое число со знаком).Ищете хороший конвертер FILETIME

Мне нужен был инструмент, где я мог бы ввести дату и получить эквивалент CTIME. Я смог найти его, как только я понял, что Unixtime - это другое имя для формата. Google был моим другом, как только я добрался туда.

Теперь как насчет конвертера FILETIME, который чаще всего используется как целое число со знаком 64 бит, представляющее 100 наносекундных единиц с 1 января 1601 года. (Что Active Directory использует внутренне для хранения времени).

Возможно, есть несколько ключевых слов для поиска, которые найдут его для меня. У меня есть инструмент, который покажет мне текущее время в FILETIME, и я могу сделать математику в другом месте вручную, но не совсем то, что я ищу из простоты использования.

У меня есть функция, которая может использовать ее в коде, но не оболочку, чтобы легко использовать ее в быстром формате. Формат времени Java поддерживает его, но я снова ищу красиво завернутую версию этого.

ответ

11

This tool will convert все типы времени онлайн.

+0

Perfect-и-Мундо! Это именно то, что мои навыки Google мешали мне найти! – geoffc

+0

К сожалению, он не обеспечивает конверсии для временных меток Java, которые основаны на миллисекундах со времен Unix Epoch (1/1/1970 00:00:00 GMT). В противном случае это очень приятно. –

+0

Это не включает доли секунды, поэтому не совсем полезно для всех целей. – bialpio

1

В Windows базовое время составляет 1/1/1601. FileTime также записывается с использованием 100 Nanoseconds в качестве меры. Используя VBA, вы получите в течение нескольких секунд в любом случае.

(-4 - ваш текущий UTC Offset) EST обычно -5, но поскольку наши правительства не могут собраться вместе и стандартизировать переключения DST или вообще избавиться от DST, вам придется изменить это на свое время зона.

600000000 преобразует 100 наносекунд в минуты, чтобы избежать переполнения.

Также признайте, что это VBA, поэтому передайте свое двойное значение в формате нотации.

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

Пример:

ConvertFileTime (1.2944684916706E + 17)

Это должен вернуться 15 марта 2011 1:48 вечера

 Смежные вопросы

  • Нет связанных вопросов^_^