2015-09-07 35 views
0

我有一个JavaFX TableView,表示由MySQL数据库填充的作业数据。除两个日期列外,所有数据均正常显示,这两个日期列均表示为YYYY-MM-DD。我想要做的就是以DD-MM-YYYY的方式进行。JavaFX中的MySQL日期格式TableView

+--------------+------------+ 
| Date Created | Deadline | 
+--------------+------------+ 
| 2015-09-07 | 2015-09-14 | 
| 2015-09-07 | 2015-09-14 | 
+--------------+------------+ 

难道是最好的通过修改我用填充表的MySQL查询做到这一点:final String finalQuery = "SELECT * FROM kitJobs ORDER BY kitJobs.CaseNO ASC";?如果是这样,我将如何修改查询以获得所需的日期格式?

+0

您是否将日期信息存储在数据库的文本字段中?如果是这样,我会首先更换*,如果可能的话。然后,改变信息在JavaFX中的格式 - 不要更改查询。 (它应该是确定格式的UI,而不是数据层。) –

+0

@JonSkeet它们作为日期类型存储在数据库中。我将如何去改变JavaFX内部数据的格式? – jbanks

+0

请参阅http://stackoverflow.com/questions/11412360/javafx-table-cell-formatting –

回答

0

您可以使用SimpleDateFormat;

String s; 
    Format formatter; 
    Date date = new Date(); 

    // 01/09/02 
    formatter = new SimpleDateFormat("dd/MM/yyyy"); 
    s = formatter.format(date); 
    System.out.println(s); 
+0

我使用此解决方案的唯一问题是何时将格式应用于日期以及它将如何应用于JavaFX表柱?从数据库获取日期后,我尝试格式化,但这不起作用。 – jbanks

+0

你能告诉我你得到了什么,你想要什么? – hurricane

0

对于寻求类似解决方案的任何人的未来参考,我通过以下操作成功地在UI中格式化了我的列;

deadlineDateCol.setCellValueFactory(
      Job -> { 
       SimpleStringProperty property = new SimpleStringProperty(); 
       DateFormat dateFormat = new SimpleDateFormat("dd/MM/yyyy"); 
       property.setValue(dateFormat.format(Job.getValue().getDeadlineDate())); 
       return property; 
      }); 
0

这就是我所做的和我完美的工作。

tbColDataMovt.setCellFactory((TableColumn<Auditoria, Timestamp> column) -> { 
    return new TableCell<Auditoria, Timestamp>() { 
    @Override 
    protected void updateItem(Timestamp item, boolean empty) { 
     super.updateItem(item, empty); 
     if (item == null || empty) { 
      setText(null); 
     } 
     else { 
      setText(item.toLocalDateTime().format(DateTimeFormatter.ofPattern("dd/MM/yyyy"))); 
     } 
     } 
    }; 
});