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
答案 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
。我们可以从中获取instance
或mills
。
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);