为什么我的文件“上次修改”时间戳仅使用“ls”命令显示年份?

为什么我的文件“上次修改”时间戳仅使用“ls”命令显示年份?

我正在构建一个 java 服务,该服务修改它所使用的一些文件的“Last Modified”字段。

该服务将文件的副本保存在文件夹中,它定期检查数据库是否有更改,如果发现数据库中“上次修改”时间戳比文件系统上的时间戳新的文件,则会从文件系统中删除该文件,下载一份新副本并将文件上的“上次修改”字段设置为与数据库中的字段相匹配。

这一切都按预期进行。在代码中,我timestamp从数据库查询 SQL,获取时间并将Long其传递到file.setLastModified()文件对象的方法中。
这按预期工作,并且在运行比较时两个时间戳都按预期匹配。
但是,当我通过 ssh 访问服务器并ls -l在包含文件的文件夹中运行时,最后修改的时间戳只是显示“2019”;但是,如果我运行该ls --full-time命令,则会显示完整的时间戳并且是正确的。
为什么是这样?
在文件上设置时间戳时是否需要设置其他标志?
现在这只是一个烦恼,我只是好奇为什么它看起来是这样的。
这是它的屏幕截图:

在此输入图像描述

答案1

你的文件可能是“来自未来”——IE它们的时间戳晚于您运行的系统上的当前时间ls。在这种情况下,ls显示年份而不是时间。

这是由 POSIX 指定ls显示过去六个月内修改的文件的日期和时间,以及其他任何内容的日期和年份。 “未来”不是“过去六个月”,所以你看到的是年份。

相关内容