2011-03-04 92 views
0

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

任何帮助都会很棒!

谢谢。

+0

这里有什么问题?获取文件,阅读或打印? – bluefoot 2011-03-04 21:29:44

+0

您是否看过本网站上的以下主题? [http://stackoverflow.com/questions/32586/how-to-discover-a-files-creation-time-with-java]那是你在做什么或者还有别的什么? – mazaneicha 2011-03-04 21:40:14

回答

0

大约

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

Java不提供原始文件时,直接访问,所以如果你问lastModified时间

someFile.lastModified(); 

您将获得文件的最后修改时间,从时间(1970年1月1日00:00 GMT)开始以毫秒为单位测量,如果文件不存在或发生I/O错误,则为0L

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

我们的米利斯转换回到一个java时间:

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

从那里,你可以使用标准I/O例程来显示和格式的日期(日期格式等)

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

+0

即使您决定尝试“回溯计算”近似WINTIME日期,也不能保证它是正确的时间,因为Java最好的测量单位是毫秒,而WINTIME最好的测量单位更小。在转换到Java时代标准时信息丢失了,在这种情况下,丢失文件感知毫秒的小数部分时丢失了信息。 – 2011-03-04 22:05:52