将java.util.Date对象转换为Windows FILETIME结构

时间:2010-08-11 14:55:07

标签: java winapi jna

我有一个Java应用程序,我需要使用JNA调用Windows DLL。我需要调用的函数实际上需要__int64(在内部它将它分成FILETIME结构的低/高部分)。给定java.util.Date对象,如何将其转换为为FILETIME格式化的适当值?

3 个答案:

答案 0 :(得分:5)

这是使用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));

答案 1 :(得分:2)

好的,我想我明白了:

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

答案 2 :(得分:2)

JNA在位于Platform jar中的FILETIME类上提供了一些静态方法。

FILETIME.dateToFileTime( Date date );
FILETIME.filetimeToDate( int high, int low );