用于处理 win32 FILETIME 的 Java 库?

标签 java

是否有任何 Java 库可以处理 win32 FILETIME/时间间隔 ? 它基本上是自 1601 年 1 月 1 日以来以 100ns 为间隔的 64 位时间戳。

(对于我的特殊需要,转换为 java.util.Date 或从 java.util.Date 或相应的 joda 时间等价物就可以了,尽管我需要访问至少微秒的分辨率——这两者似乎都没有提供。)

最佳答案

如果您对毫秒分辨率没问题,这会起作用:

/** Difference between Filetime epoch and Unix epoch (in ms). */
private static final long FILETIME_EPOCH_DIFF = 11644473600000L;

/** One millisecond expressed in units of 100s of nanoseconds. */
private static final long FILETIME_ONE_MILLISECOND = 10 * 1000;

public static long filetimeToMillis(final long filetime) {
    return (filetime / FILETIME_ONE_MILLISECOND) - FILETIME_EPOCH_DIFF;
}

public static long millisToFiletime(final long millis) {
    return (millis + FILETIME_EPOCH_DIFF) * FILETIME_ONE_MILLISECOND;
}

此时,从 ms 转换为 Date 对象非常简单。

关于用于处理 win32 FILETIME 的 Java 库?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5398557/

相关文章:

java - 不使用修剪方法从字符串中删除空格?

Java 窗口是空的

java - 如何从 Java 打开带有附件的电子邮件客户端

java - 如何从字符串变量中分段读取数据?

java - 反向拆分字符串

java - 我尝试从 POSTMAN API 工作正常,但从我的 Java 代码不行?

java - 如何从 Angular 前端获取后端数据进度?

java - 高性能日期运算函数

java - 安卓日历: Get to the future day

java - 如果给定两个十六进制数,用格雷码判断它们是否可以连续