如何使用DateFormat将FileTime转换为String

时间:2015-02-03 17:09:25

标签: java datetime nio

我试图将文件的creationTime属性转换为日期格式为MM / dd / yyyy的字符串。我正在使用Java nio来获取FileTime类型的creationTime属性,但我只想将此FileTime中的日期作为具有先前指定的日期格式的字符串。到目前为止,我有......

String file = "C:\\foobar\\example.docx";
Path filepath = Paths.get(file);
BasicFileAttributes attr = Files.readAttributes(filepath,BasicFileAttributes.class); 
FileTime date = attr.creationTime();
DateFormat df = new SimpleDateFormat("MM/dd/yyyy");
String dateCreated = df.format(date);

但是,它会抛出一个异常,说它无法将FileTime date对象格式化为Date。例如,FileTime似乎以2015-01-30T17:30:57.081839Z的形式输出。你会建议什么解决方案来解决这个问题?我应该在该输出上使用正则表达式还是有更优雅的解决方案?

5 个答案:

答案 0 :(得分:11)

来自FileTime的{​​{3}}。

String dateCreated = df.format(date.toMillis());
//                                 ^

答案 1 :(得分:11)

toMillis()方法将FileTime转换为millis。

String file = "C:\\foobar\\example.docx";
Path filepath = Paths.get(file);
        BasicFileAttributes attr = Files.readAttributes(filepath, BasicFileAttributes.class);
        FileTime date = attr.creationTime();
        SimpleDateFormat df = new SimpleDateFormat("MM/dd/yyyy");
        String dateCreated = df.format(date.toMillis());
        System.out.println(dateCreated);

使用此代码获取格式化值。

答案 2 :(得分:4)

在Java 8中,您可以在格式化之前将FileTime转换为ZonedDateTime

BasicFileAttributes attr = Files.readAttributes(path, BasicFileAttributes.class);
long cTime = attr.creationTime().toMillis();
ZonedDateTime t = Instant.ofEpochMilli(cTime).atZone(ZoneId.of("UTC"));
String dateCreated = DateTimeFormatter.ofPattern("MM/dd/yyyy").format(t);
System.out.println(dateCreated);

打印:

06/05/2018

答案 3 :(得分:3)

将FileTime转换为日期

Path path = Paths.get("C:\\Logs\\Application.evtx");
DateFormat df=new SimpleDateFormat("dd/MM/yy");
try {
    BasicFileAttributes attr = Files.readAttributes(path, BasicFileAttributes.class);
    Date d1 = df.parse(df.format(attr.creationTime().toMillis()));
    System.out.println("File time  : " +d1);
} catch (Exception e) {
    System.out.println("oops error! " + e.getMessage());
}

使用此代码进行转换

答案 4 :(得分:0)

总结:

String file = "C:\\foobar\\example.docx";
Path filepath = Paths.get(file);
BasicFileAttributes attr = Files.readAttributes(filepath,BasicFileAttributes.class); 
FileTime date = attr.creationTime();
DateFormat df = new SimpleDateFormat("MM/dd/yyyy");
String dateCreated = df.format(date.toMillis());