如何让 GWT 日期格式正确?

How to get GWT dates to be formatted correctly?

如何获取 MM/dd/yyyy 格式的今天日期?我遵循了文档和示例。应该这样做:

Date today = new Date();
DateTimeFormat fm = DateTimeFormat.getFormat("MM/dd/yyyy");
String date = fm.format(today);
return new Object[][] {
        new Object[] { "This is a note", date},
        new Object[] { "This is a very very very long note", date}
};

而是将以下内容放在网格的日期单元格中:

Sun Mar 07 2021 00:00:00 GMT-0700 (Mountain Standard Time)

然后我尝试这样做 javascript 像这样:

public native String getTodaysDate() /*-{
    return new Date().toLocaleDateString();
    }-*/;

private Object[][] getNoteData() {
    String date = getTodaysDate();

产生相同的结果。

如此简单的任务却浪费了这么多时间!建议?

编辑:我正在添加更多代码以便人们更好地诊断问题。

private Panel createNotesTable() {
    Panel panel = new Panel();

    RecordDef recordDef = new RecordDef(
            new FieldDef[] { 
                    new StringFieldDef("note"), 
                    new DateFieldDef("date"), 
            }
    );

    GridPanel grid = new GridPanel();
    Object[][] data = getNoteData();
    MemoryProxy proxy = new MemoryProxy(data);

    ArrayReader reader = new ArrayReader(recordDef);
    Store store = new Store(proxy, reader);
    store.load();
    grid.setStore(store);

    ColumnConfig[] columns = new ColumnConfig[] {
            new ColumnConfig("Note", "note", 130, true, null, "note"),
            new ColumnConfig("Date", "date", 65, true)
    };
    ColumnModel columnModel = new ColumnModel(columns);
    grid.setColumnModel(columnModel);

    grid.setStripeRows(true);

    panel.add(grid);
    return panel;
}

private Object[][] getNoteData() {
    Date today = new Date();
    DateTimeFormat fm = DateTimeFormat.getFormat("MM/dd/yyyy");
    String date = fm.format(today);
    GWT.log("date=" +date);  //date is formatted correctly
    //but when it is put into the cell, it gets reformatted back to a long version
     return new Object[][] {
            new Object[] { "This is a note", date},
            new Object[] { "This is a very very very long note", date}
    };
}

可能更容易 use locales:

String date = new Intl.DateTimeFormat('en-US').format(today)

原因是因为我用的是

new DateFieldDef("date")

而不是

new StringFieldDef("date"),

感谢评论者的提示!