文件lastModified()返回Wed Dec 31 19:00:00 EST 1969

Jor*_*J.D 1 java time file-io

我正在用这样的文件做一些测试:

    public Date findFileDate(){
    File file = new File(filePath);
    Date date = new Date(file.lastModified());
    return date;
}
Run Code Online (Sandbox Code Playgroud)

我打印date时说:Wed Dec 31 19:00:00 EST 1969.根据我的时区经过一些研究后我发现这是我"自Unix时代以来的时间",但我很困惑,为什么当我的文件不存在时我会得到这个输出filePath.为什么不回来null0

Jon*_*eet 6

不,file.lastModified()正在返回0.那是Unix时代

在您的特定时区(美国东部看起来它),Unix时代的当地时间比UTC晚5个小时,所以它是1969年12月31日晚上7点.

要确认这一点,只需将您的Date声明和作业分成两部分:

long lastModifiedMillis = file.lastModified();
Date date = new Date(lastModifiedMillis);
Run Code Online (Sandbox Code Playgroud)

现在,如果你检查lastModifiedMillis我敢肯定,你会发现一个0值,作为记录:

返回
long表示文件的最后修改,因为历元以毫秒为单位测得的时间值(00:00:00 GMT,1970年1月1日),或者0L如果该文件不存在,或者如果发生I/O错误