我正在编写一个程序,需要确定文件/目录的最后修改时间。我想使用Joda Time来处理这个时间,并且我正在使用Java 7 NIO.2类Files
来获取文件的最后修改时间。它的getLastModifiedTime()
方法返回FileTime
类的一个实例,该实例具有方便的方法toMillis()
,我将其结果传递给Joda Time DateTime
类的构造函数:
new DateTime(Files.getLastModifiedTime(path).toMillis());
然而,我感觉自己做错了,因为
DateTime(long)
构造函数明确提到将使用默认时区创建DateTime
实例。然而,FileTime
文档中没有任何地方提到其时区。我查看了FileTime
代码;它似乎非常简单,并且它的toString()
方法表明它正在使用UTC时区(它在UTC时区创建一个Calendar
并直接设置毫秒数)。那么,
FileTime
是使用UTC还是本地时间?将FileTime
转换为DateTime
的正确方法是什么?
DateTime
构造函数期望的是本地时区的时间戳,但正如你所说,时间戳始终是 UTC 时间。那么另一个DateTime
构造函数中的DateTimeZone
参数只是定义了如何查看此时间戳。 - Vladimir Matveev