2011-03-04 93 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