Java дисплей Windows UTC время - PullRequest
       15

Java дисплей Windows UTC время

0 голосов
/ 05 марта 2011

Windows хранит FileTime внутри себя как число 100 наносекунд с 1.1.1601 UTC как 64-битное поле, возможно ли получить Java для распечатки текущего числа? Просто ищу пример, так как я не могу найти способ сделать это. Я хотел бы распечатать номер?

Любая помощь будет благодарна!

Спасибо.

Ответы [ 2 ]

0 голосов
/ 05 марта 2011

Java не предоставляет прямой доступ к необработанному времени файла, поэтому, если вы попросите lastModified time

someFile.lastModified();

Вы получите время последнего изменения файла, измеренное в миллисекундах с начала эпохи (00:00:00 по Гринвичу, 1 января 1970 г.), или 0L, если файл не существует или если произошла ошибка ввода-вывода

Не каждая платформа отслеживает «одинаковые» времена по отношению к файлу, и то, как они отслеживают его внутренне, отличается. Часть попытки Java сделать согласованную платформу из различных стандартов использует полиморфизм, чтобы перевести определенное время платформы в «стандарт Java» под прикрытием.

Теперь, чтобы преобразовать Миллис, возвращаемое во время Java:

java.util.Date date = new java.util.Date(millis);

Оттуда вы можете использовать стандартные процедуры ввода / вывода для отображения и форматирования даты (DateFormat и т. Д.)

PS. 01.01.1601 была выбрана в качестве эпохи COBOL изначально и имитировалась Microsoft (и, возможно, другими). Причина, по которой он был выбран, заключается в том, что это начало 400-летнего цикла григорианского календаря во время выпуска операционной системы. Каждые 400 лет схема високосных лет повторяется.

0 голосов
/ 05 марта 2011

Приблизительно

long diff1601to1970 = 315532800 * 1000000000; // <-- diff in nanoseconds(1/1/1601 to 1/1/1970)
long currentFrom1970 =  System.currentTimeMillis() * 1000000;
long currentFrom1601 = diff1601to1970 + currentFrom1970;
...