如何让 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"),
感谢评论者的提示!
如何获取 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"),
感谢评论者的提示!