Files

為什麼我的文件“上次修改”時間戳僅使用“ls”命令顯示年份?

  • February 11, 2019

我正在建構一個 java 服務來修改它使用的一些文件的“上次修改”欄位。

該服務將文件的副本保存在文件夾中,它會定期檢查數據庫的更改,如果發現數據庫中的“最後修改”時間戳比文件系統上的時間戳更新,則從文件系統中刪除該文件,下載一個新副本並設置文件上的“最後修改”欄位以匹配數據庫中的那個。

這一切都按預期工作。在程式碼中,我timestamp從數據庫中查詢 SQL,獲取時間作為 aLong並將其傳遞file.setLastModified()給文件對象的方法。

這可以按預期工作,並且在執行比較時,兩個時間戳都按預期匹配。

但是,當我通過 ssh 訪問伺服器並ls -l在包含文件的文件夾中執行時,最後修改的時間戳只顯示“2019”;但是,如果我執行該ls --full-time命令,則會顯示完整的時間戳並且是正確的。

為什麼是這樣?

在文件上設置時間戳時,我還需要設置其他標誌嗎?

現在這只是一個煩惱,我只是好奇為什麼它看起來像這樣。

這是它的截圖:

在此處輸入圖像描述

您的文件可能“來自未來”——它們的時間戳晚於您執行的系統上的目前時間ls。在這種情況下,ls顯示年份而不是時間。

這是由 POSIX 指定的ls顯示過去六個月內修改的文件的日期和時間,其他任何內容的日期和年份。“未來”不是“過去六個月”,所以你看的是年份。

引用自:https://unix.stackexchange.com/questions/499948