【发布时间】:2010-08-11 14:55:06
【问题描述】:
我有一个 Java 应用程序,我需要使用 JNA 调用一个 Windows DLL。我需要调用的函数实际上需要一个__int64(在内部它将它拆分为FILETIME 结构的低/高部分)。给定一个java.util.Date 对象,如何将其转换为为FILETIME 格式化的适当值?
【问题讨论】:
我有一个 Java 应用程序,我需要使用 JNA 调用一个 Windows DLL。我需要调用的函数实际上需要一个__int64(在内部它将它拆分为FILETIME 结构的低/高部分)。给定一个java.util.Date 对象,如何将其转换为为FILETIME 格式化的适当值?
【问题讨论】:
这就是使用 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));
【讨论】:
好的,我想我想通了:
long date = (new Date().getTime() + 11644473600000L) * 10000L;
【讨论】:
11644473600000L的?
JNA 在位于 Platform jar 中的 FILETIME 类上提供了一些静态方法。
FILETIME.dateToFileTime( Date date );
FILETIME.filetimeToDate( int high, int low );
【讨论】: