ファイルの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
の形式で出力されるようです。これを最もよく解決するためにどのソリューションをお勧めしますか?その出力に正規表現を使用する必要がありますか、それともより洗練されたソリューションがありますか?
ちょうど エポックからのミリ秒を取得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);
このコードを使用して、フォーマットされた値を取得します。
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
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());
}
このコードを使用して変換します
要約すると:
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());