在Java中没有时间戳的creationTime

时间:2016-11-14 11:48:55

标签: java time format creation

编辑:我想创建文件的创建时间,但没有时间戳。 我的代码是:

Path path = Paths.get(selectedFile.toURI());
BasicFileAttributes attr;
attr = Files.readAttributes(path, BasicFileAttributes.class);
System.out.println("Creation date: " + attr.creationTime());

输出:

Creation date: 2013-07-25T13:52:23.043207Z

我该怎么做只有:Creation date: 2013-07-25? 当我使用SimpleDateFormat时,它会返回一个错误: 例如,如果我使用(就像我在这个论坛中看到的那样):

Calendar c = GregorianCalendar.getInstance();
String s = String.format("Duke's Birthday: %1$tm %1$te,%1$tY", attr.creationTime);
System.out.println("duke: " +s);
  

java.lang.RuntimeException:java.lang.reflect.InvocationTargetException

3 个答案:

答案 0 :(得分:1)

creationTime()返回SimpleDateFormat的内容SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd"); System.out.printf( "Creation date: %s%n", format.format(new Date(attr.creationTime().toMillis())) ); 不支持String这就是失败的原因,您需要先将其转换为FileTime,这要归功于FileTime方法java.util.Date作为下一个

fn

NB:由于同样的原因,from typing import List, Tuple from itertools import groupby, filterfalse from fn import F 格式失败(def getcol3(line: str) -> str: return line.split("\t")[2] 不支持)。

答案 1 :(得分:1)

creationTime返回FileTime。我们可以从中获取instancemills

FileTime ft = attr.creationTime();

转换为日期

Instant ins = ft.toInstant();
LocalDateTime ldt = LocalDateTime.ofInstant(ins, ZoneId.systemDefault());
LocalDate ld = ldt.toLocalDate();

LocalDate.ofEpochDay(ft.toMillis());

答案 2 :(得分:0)

如果selectedFile的类型为java.io.File,则可以像

那样进行
long lastModifiedMillis = selectedFile.lastModified();
Date lastModifiedDate = new Date(lastModifiedMillis);
String s = String.format("Duke's Birthday: %1$tY-%1$tm-%1$td", lastModifiedDate);
System.out.println("duke: " + s);