web-dev-qa-db-ja.com

FileTimeを日付形式の文字列に変換する方法

ファイルの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の形式で出力されるようです。これを最もよく解決するためにどのソリューションをお勧めしますか?その出力に正規表現を使用する必要がありますか、それともより洗練されたソリューションがありますか?

11
user2150250

ちょうど エポックからのミリ秒を取得FileTimeから。

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

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);

このコードを使用して、フォーマットされた値を取得します。

11
Selvaraj

Java 8では、フォーマットする前にFileTimeZonedDateTimeに変換できます。

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
5
Mincong Huang

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
adesh

要約すると:

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());
0
chia yongkang