Java 无法在GWT中将字符串转换为日期

Java 无法在GWT中将字符串转换为日期,java,date,gwt,Java,Date,Gwt,我正在尝试将GWT中的字符串更改为Date。在StackOverFlow中搜索后,我得到了一个解决方案。但我仍然得到了 java.lang.IllegalArgumentException:2014年2月21日星期五00:00:00 下面是我在GXT GridEditor类中的代码 DateTimeFormat fmt = DateTimeFormat.getFormat("EEE MMM dd HH:mm:ss z yyyy"); Date checkInDate = fmt.parse(AC

我正在尝试将GWT中的字符串更改为Date。在StackOverFlow中搜索后,我得到了一个解决方案。但我仍然得到了

java.lang.IllegalArgumentException:2014年2月21日星期五00:00:00

下面是我在GXT GridEditor类中的代码

DateTimeFormat fmt = DateTimeFormat.getFormat("EEE MMM dd HH:mm:ss z yyyy");
Date checkInDate = fmt.parse(ACCCheckBoxModel.getSelectedItem().getCheckinDate());
ACCCheckBoxModel.getSelectedItem().getCheckinDate()
我得到一个字符串。我需要将此字符串转换为日期。然后我需要将日期格式转换为
dd/MMM/yyyy
格式


请建议如何解决此问题。

解析器不理解IST。尝试将解析移到服务器端

以下引用自:

对解析的时区支持是有限的。仅标准GMT和 支持RFC格式。使用时区id的时区规范 (如美国/洛杉矶)、时区名称(如太平洋标准时间、太平洋标准时间) 不支持标准时间)。通常,这是一个太大的负担 用于客户端应用程序加载所有时区符号。而且 几乎在所有这些情况下,在上执行此类解析是一个更好的选择 服务器端通过特定的RPC机制。这个决定是基于 我们研究过的特定用例;原则上,这是可能的 在将来的版本中更改


问题在于
IST
不能通过
DateTimeFormat

试试这一款,它在模式中没有
IST
的情况下工作正常

    DateTimeFormat fmt = DateTimeFormat.getFormat("EEE MMM dd HH:mm:ss yyyy");
    Date checkInDate = fmt.parse("Fri Feb 21 00:00:00 2014");
    System.out.println(DateTimeFormat.getFormat("dd/MMM/yyyy").format(checkInDate));
或者使用
GMT
代替
IST
,如下所示

    DateTimeFormat fmt = DateTimeFormat.getFormat("EEE MMM dd HH:mm:ss v yyyy");
    Date checkInDate = fmt.parse("Fri Feb 21 00:00:00 GMT+05:30 2014");
    System.out.println(DateTimeFormat.getFormat("dd/MMM/yyyy").format(checkInDate));

只需调用GWT RPC调用,然后在服务器上尝试下面的代码,找出您的本地化日期格式并立即使用它

        Locale locale = httpServletRequest.getLocale();

        final Date currentDate = new Date();
        final DateFormat dateInstance = DateFormat.getDateInstance(DateFormat.FULL, locale);
        final String format = dateInstance.format(currentDate);
        System.out.println(format);

        if (dateInstance instanceof SimpleDateFormat) {
            System.out.println("pattern: " + ((SimpleDateFormat) dateInstance).toPattern());
            System.out.println("localized pattern: "+((SimpleDateFormat) dateInstance).toLocalizedPattern());
        }
下面是关于日期模式的示例代码

这里还有一个链接可以在服务器端阅读。

试试这个:

String string = "January 2, 2010";
Date date = new SimpleDateFormat("MMMM d, yyyy", Locale.ENGLISH).parse(string);
System.out.println(date); // Sat Jan 02 00:00:00 BOT 2010
看一看


可能重复@Jigar Joshi我已经在调查此事。在发布此问题之前。但是仍然无法解析。您可以发布不适用于的确切代码吗you@JigarJoshi请在问题中找到代码。