如何使用 DateFormat 将 FileTime 转换为字符串
How to Convert FileTime to String with DateFormat
我正在尝试将文件的 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
对象格式化为日期。例如,FileTime 似乎以 2015-01-30T17:30:57.081839Z
的形式输出。您会推荐什么解决方案来最好地解决这个问题?我应该只在该输出上使用正则表达式还是有更优雅的解决方案?
get the milliseconds since epoch 来自 FileTime
。
String dateCreated = df.format(date.toMillis());
// ^
通过 toMillis()
方法将 FileTime 转换为毫秒。
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);
使用此代码获取格式化值。
将文件时间转换为日期
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());
}
使用此代码进行转换
在Java8中,你可以先把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
总结一下:
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());
我正在尝试将文件的 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
对象格式化为日期。例如,FileTime 似乎以 2015-01-30T17:30:57.081839Z
的形式输出。您会推荐什么解决方案来最好地解决这个问题?我应该只在该输出上使用正则表达式还是有更优雅的解决方案?
get the milliseconds since epoch 来自 FileTime
。
String dateCreated = df.format(date.toMillis());
// ^
通过 toMillis()
方法将 FileTime 转换为毫秒。
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);
使用此代码获取格式化值。
将文件时间转换为日期
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());
}
使用此代码进行转换
在Java8中,你可以先把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
总结一下:
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());