是否有任何Java库来处理win32 FILETIME /时间间隔?从1601年1月1日开始,它基本上是100ns间隔的64位时间戳.
(对于我的特殊需求,转换为/从java.util.Date转换或适当的joda时间相当于,但我需要访问至少微秒的分辨率 - 这似乎都没有提供.)
小智 8
如果你的毫秒级分辨率很好,这可行:
/** 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;
}
Run Code Online (Sandbox Code Playgroud)
此时,从ms转换为Date对象非常简单.
上次我使用 JNI 解决了这个问题...(虽然不是在 Windows 上,但这是 unix)
也就是说,一段调用本机操作系统函数的 C++ 代码,然后使用 Java 本机接口调用该代码。
有点笨重,但这是我能找到的唯一方法(还需要 i 节点)。
编辑:假设这些值已经从其他来源获得,Date4J 可以处理带有 9 位小数的秒,但它的功能不如 Joda 丰富。
| 归档时间: |
|
| 查看次数: |
2595 次 |
| 最近记录: |