我在这个问题上浪费了很多时间,因此我将发布的问题和从中学到的内容作为对其他人的帮助资源。问题的背景是构建RSS阅读器。虽然RSS日期应该符合RFC822,但它们以不同的方式进行,因此您需要一种灵活的方法。我尝试使用GWT DateTimeFormat以及对一些不同的掩码进行硬编码,但一直在寻找破坏我代码的测试用例。我终于偶然发现了优雅的解决方案:

包装对javascript Date.parse()方法的调用。它真的“工作正常”。

作为一种元理论,我将在继续进行开发时尝试对其进行测试,其中可能有很多事情都可以通过使用本机javascript或其他库来“发挥作用”,而不是尝试使用Java对其进行强行使用。在GWT中。

干杯!

最佳答案

使用JSNI本机javascript处理可包装对javascript Date.parse()方法的调用。它可以处理比GWT的DateTimeFormat更多的格式。

下面的代码给出了一个演示。注意,GWT不允许javascript传递长值,因此我使用toString来解决。

      public native String webDateToMilliSec(String webDate) /*-{
        var longDate = Date.parse(webDate);
        return longDate.toString();
      }-*/;

      public long getTimeStamp(final Element el) {
          String sDate = getValueIfPresent(el, "pubDate");
          String sLongDate = webDateToMilliSec(sDate);
          long longDate = Long.parseLong(sLongDate);
          return longDate;
      }

08-18 22:38