Преобразовать объект java.util.Date в структуру Windows FILETIME - PullRequest
3 голосов
/ 11 августа 2010

У меня есть приложение Java, и мне нужно вызвать Windows DLL с помощью JNA. Функция, которую мне нужно вызвать, на самом деле занимает __int64 (внутренне она разбивает это на низкую / верхнюю части структуры FILETIME). Учитывая объект java.util.Date, как я могу преобразовать его в соответствующее значение, отформатированное для FILETIME?

Ответы [ 3 ]

5 голосов
/ 13 декабря 2012

Вот как вы можете сделать это, используя Java nio

    BasicFileAttributes attr = Files.readAttributes(filePath, BasicFileAttributes.class);
    DateFormat df = new SimpleDateFormat("yyyy/MM/dd");
    Date d = new Date(attr.creationTime().toMillis()); //attr.creationTime() returns a FileTime             
    System.out.println(df.format(d));
2 голосов
/ 13 июня 2011

JNA предоставляет некоторые статические методы для класса FILETIME , который находится в jar платформы.

FILETIME.dateToFileTime( Date date );
FILETIME.filetimeToDate( int high, int low );
2 голосов
/ 11 августа 2010

Хорошо, думаю, я понял это:

long date = (new Date().getTime() + 11644473600000L) * 10000L;
...