Files
為什麼我的文件“上次修改”時間戳僅使用“ls”命令顯示年份?
我正在建構一個 java 服務來修改它使用的一些文件的“上次修改”欄位。
該服務將文件的副本保存在文件夾中,它會定期檢查數據庫的更改,如果發現數據庫中的“最後修改”時間戳比文件系統上的時間戳更新,則從文件系統中刪除該文件,下載一個新副本並設置文件上的“最後修改”欄位以匹配數據庫中的那個。
這一切都按預期工作。在程式碼中,我
timestamp
從數據庫中查詢 SQL,獲取時間作為 aLong
並將其傳遞file.setLastModified()
給文件對象的方法。這可以按預期工作,並且在執行比較時,兩個時間戳都按預期匹配。
但是,當我通過 ssh 訪問伺服器並
ls -l
在包含文件的文件夾中執行時,最後修改的時間戳只顯示“2019”;但是,如果我執行該ls --full-time
命令,則會顯示完整的時間戳並且是正確的。為什麼是這樣?
在文件上設置時間戳時,我還需要設置其他標誌嗎?
現在這只是一個煩惱,我只是好奇為什麼它看起來像這樣。
這是它的截圖:
您的文件可能“來自未來”——即它們的時間戳晚於您執行的系統上的目前時間
ls
。在這種情況下,ls
顯示年份而不是時間。這是由 POSIX 指定的:
ls
顯示過去六個月內修改的文件的日期和時間,其他任何內容的日期和年份。“未來”不是“過去六個月”,所以你看的是年份。