我有以下代码
String test = "21/04/2013";
fmt = DateTimeFormat.getFormat("MM/dd/yyyy");
Date dateTest = fmt.parse(test);
Window.alert(fmt.format(dateTest));
警报框显示日期
09/04/2014
代替
21/04/2013
为什么?
正如其他人已经说过的,这是因为你的模式。他们没有说的是为什么它会这样。
解析21/04/2013
为时MM/dd/yyyy
,DateTimeFormat
会将日期分解为:
月 日 年 21 4 2013
然后它会调整事情以使日期有效。为此,Month部分被截断12
(因此临时日期为Dec 4th, 2013),然后添加剩余部分(21 - 12 = 9),导致Sept. 4th 2014,根据您的格式显示为09/04/2014
.
你正在颠倒日期和月份。
String test = "21/04/2013";
fmt = DateTimeFormat.getFormat("dd/MM/yyyy");
Date dateTest = fmt.parse(test);
Window.alert(fmt.format(dateTest));
您想显示21/04/2013
,但格式是MM/dd/yyyy
. 它应该是dd/MM/yyyy
所以像这样改变它:
String test = "21/04/2013";
fmt = DateTimeFormat.getFormat("dd/MM/yyyy");
Date dateTest = fmt.parse(test);
Window.alert(fmt.format(dateTest));