この単純なコードは、Date
文字列を希望する形式に変換します。ただし、日付がフォーマットされると、さらに 1 日が追加されます。SmartGWT の RelativeDateItem コントロールで onChanged イベントが発生すると、解析が行われます。ただし、そのコンポーネントの使用が日付の解析に影響を与えるとは思いません。
private static String DATE_FORMAT = "dd.MMM.yyyy kk:mm";
...
private void changeDateFormat()
{
DateUtil.setShortDatetimeDisplayFormatter(new DateDisplayFormatter()
{
public String format(Date date)
{
System.out.println("setShortDatetimeDisplayFormatter = " + date.toString());
if(date == null)
{
return null;
}
else
{
final DateTimeFormat dateFormatter = DateTimeFormat.getFormat(DATE_FORMAT);
System.out.println("Formatted date = " + dateFormatter.format(date));
return dateFormatter.format(date);
}
}
});
// It is a requirement that we implement a custom date parser or the onChanged event
// will not fire.
DateUtil.setDateParser(new DateParser()
{
public Date parse(String dateString)
{
System.out.println("Entering parse = " + dateString);
final DateTimeFormat format = DateTimeFormat.getFormat(DATE_FORMAT);
System.out.println("Exiting parse = " + format.parse(dateString));
return format.parse(dateString);
}
});
}
デバッグ:
setShortDatetimeDisplayFormatter = Tue Feb 19 00:00:00 EST 2013
Formatted date = 19.Feb.2013 24:00
Entering parse = 19.Feb.2013 24:00
Exiting parse = Wed Feb 20 00:00:00 EST 2013
Entering parse = 19.Feb.2013 24:00
Exiting parse = Wed Feb 20 00:00:00 EST 2013
setShortDatetimeDisplayFormatter = Wed Feb 20 00:00:00 EST 2013
Formatted date = 20.Feb.2013 24:00
RelativeDateItem
コントロールにはピッカー テキストと隣接するラベル テキストの両方が含まれているため、2 回発生し、両方をフォーマットする必要があります。