如何解析GWT中的日期?

时间:2010-07-21 04:48:53

标签: javascript gwt parsing

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

包含对javascript Date.parse()方法的调用。它真的“只是工作”。

作为一个元理论,在我继续开发的过程中,我将尝试测试,可能有很多东西通过使用本机javascript或其他库来“正常工作”而不是试图暴力它在GWT中使用Java。

干杯!

1 个答案:

答案 0 :(得分:3)

使用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;
      }