在Microsoft Spec中,DATETIME
表示为2个32位整数:low
和high
参考:https : //docs.microsoft.com/zh-
cn/openspecs/windows_protocols/ms-
dtyp/cca27429-5689-4a16-b2b4-9325d93e4ba2
FILETIME结构是一个64位值,表示自1601年1月1日(协调世界时)以来已过去的100纳秒间隔数。typedef struct _FILETIME
{DWORD dwLowDateTime; DWORD dwHighDateTime; } FILETIME, PFILETIME,
LPFILETIME;
dwLowDateTime:32位无符号整数,包含文件时间的低位。dwHighDateTime:32位无符号整数,包含文件时间的高位。
例如,这是长 130280867040000000
所以高和低的计算
int high = (int)(fullval >> 32);
int low = (int)fullval;
那么高= 30333378
和低=552794112
如何将这些计算到Java 8 Instant?
对于1秒精度的转换,您自己的答案就可以了。如果您还需要转换秒的分数,这是一种方法。
Instant msFiletimeEpoch = Instant.parse("1601-01-01T00:00:00Z");
// a tick is 100 nanoseconds
int nanosPerTick = 100;
long ticksPerSecond = TimeUnit.SECONDS.toNanos(1) / nanosPerTick;
long fullval = 130_280_867_040_000_000L;
long seconds = fullval / ticksPerSecond;
long nanos = fullval % ticksPerSecond * nanosPerTick;
Instant answer = msFiletimeEpoch.plusSeconds(seconds).plusNanos(nanos);
System.out.println(answer);
输出为:
2013-11-05T00:58:24Z
让我们尝试在原始价值上再加上1个勾号;它应该增加100纳秒。
long fullval = 130_280_867_040_000_001L;
2013-11-05T00:58:24.000000100Z
确实如此。
请注意未来很长的日期:根据您的报价,Microsoft整数都是无符号的。Java
long
已签名。因此,在30828年的某个时候,我们将开始获得非常错误的结果。万一如果long
值是负数,我们应该抛出一个异常。
问题内容: 我从https://github.com/jaliss/securesocial/tree/master下载了securesocial- master.zip 1,解压后更改目录 2.运行激活器 错误消息: 问题答案: 根据您输入的信息: 光盘到 C:\ Users \ ddd \ play \ securesocial-master 2.从根目录运行激活器 C:\ Users \ d
问题内容: 等待,不要着急回答“ java.util.Date”,请考虑以下情形。 具有2个字段的Person对象:“ birthday”和“ nextMeeting”均为java.util.Date。现在将生日作为日期类型列(无时间)存储在数据库中,例如。1979年1月10日,以及nextMeeting作为ex的日期时间类型。2010年1月10日20:00:00。 从数据库中拉出它,JDBC将自
问题内容: 我想验证数据库中是否存在表,如果不存在,则要创建它。如何获取当前数据库中所有表的列表? 我可以使用SELECT来获得数据库列表,如下所示: 剩下的就是创建表(如果不存在)。 我还尝试使用以下数据库同时创建表: 但这在“使用”行上给了我错误,说“ db”不存在。这次,我将尝试使用2个不同的命令来执行此操作。 问题答案: 这应该为您提供数据库中所有表的列表 因此,您可以像使用数据库检查一样
问题内容: 我试图使用开放源代码的Java库来可视化图中的节点和边,但是我完全迷失了。 我的文件夹中有一堆jar文件。单击某些jar文件会使Java swing窗口弹出并显示图形。单击其他jar文件不会执行任何操作。 如果我知道了,我是否会将jar文件与其他文件保存在那里,还是不能使用? 如果我弄清楚了如何使用这些文件,这是否意味着如果我将Java项目转移到另一台计算机上,就必须包括它们?我将如何
本文向大家介绍您如何在Cucumber中使用正则表达式?,包括了您如何在Cucumber中使用正则表达式?的使用技巧和注意事项,需要的朋友参考一下 我们可以在Cucumber中使用正则表达式来选择功能文件中相似语句的集合。 示例 功能文件 步骤定义文件具有@Given(“([^ \”] *)season $“)中的@Given时间表,该表在正则表达式的帮助下将两个Given语句映射到Feature
如何使用Angular或JavaScript在超文本标记语言页面中显示Microsoft Word文件。请推荐任何提供此功能的库。