java显示Windows UTC时间

时间:2011-03-04 21:28:21

标签: java printing time utc

Windows将FileTime内部存储为自1.1.1601 UTC以来的100纳秒数作为64位字段,是否可以让java打印出当前数字?只是寻找一个例子,因为我找不到办法做到这一点。我想打印这个号码吗?

任何帮助都会很棒!

感谢。

2 个答案:

答案 0 :(得分:0)

long diff1601to1970 = 315532800 * 1000000000; // <-- diff in nanoseconds(1/1/1601 to 1/1/1970)
long currentFrom1970 =  System.currentTimeMillis() * 1000000;
long currentFrom1601 = diff1601to1970 + currentFrom1970;

答案 1 :(得分:0)

Java不提供对原始文件时间的直接访问,因此如果您要求lastModified时间

someFile.lastModified();

您将获得上次修改文件的时间(以纪元(1970年1月1日格林威治标准时间00:00:00)为单位,以毫秒为单位),如果文件不存在或发生I / O错误,则为0L

并非每个平台都跟踪与文件相关的“相同”时间,以及它们如何在内部跟踪它们是不同的。 Java尝试使用不同标准构建一个连贯的平台的一部分,使用多态将平台特定时间转换为封面下的“java标准”。

现在将millis转换为java时间:

java.util.Date date = new java.util.Date(millis);

从那里你可以使用标准的i / o例程来显示和格式化日期(DateFormat等)。

PS。最初由COBOL选择1/1/1601作为时代,并且由微软(可能还有其他人)模仿。选择它的原因是因为它是操作系统发布时400年格里高利历周期的开始。每隔400年,闰年的模式就会重演。