マイペースなプログラミング日記

x86エミュレータやFPGA、WebGLにお熱なd-kamiがマイペースに書くブログ

JavaFXでファイルマネージャー編 その9 ファイルビューのソースコードの修正

前回のソースコードではJava8なのにSimpleDateFormatが使われていた!
JavaFXでファイルマネージャー編 その8 ファイルビューのソースコード - マイペースなプログラミング日記

ので今回はLocalDateTimeやDateTimeFormatterを使うように修正した。

修正前

private static TableColumn<File, String> createModifyColumn(){
    TableColumn<File, String> modifyColumn = new TableColumn<>("更新日時");

    modifyColumn.setCellValueFactory(new Callback<CellDataFeatures<File, String>, ObservableValue<String>>(){
        @Override
        public ObservableValue<String> call(CellDataFeatures<File, String> param){
            SimpleDateFormat format = new SimpleDateFormat("yyyy/MM/dd HH:mm");
                
            return new SimpleStringProperty(format.format(param.getValue().lastModified()));
        }
    });
        
    return modifyColumn;
}

修正後

private static TableColumn<File, String> createModifyColumn(){
    TableColumn<File, String> modifyColumn = new TableColumn<>("更新日時");

    modifyColumn.setCellValueFactory(new Callback<CellDataFeatures<File, String>, ObservableValue<String>>(){
        @Override
        public ObservableValue<String> call(CellDataFeatures<File, String> param){
            String modifyTime = "";

            try{
                FileTime time = Files.getLastModifiedTime(param.getValue().toPath());
                LocalDateTime date = LocalDateTime.ofInstant(time.toInstant(), ZoneId.systemDefault());

                modifyTime = MODIFY_FOMATTER.format(date);
            }catch(IOException e){
                e.printStackTrace();
            }

            return new SimpleStringProperty(modifyTime);
        }
    });
        
    return modifyColumn;
}