Как разобрать даты в GWT? - PullRequest
6 голосов
/ 21 июля 2010

Я потерял много времени на этом, поэтому я публикую вопрос и отвечаю из того, что я узнал, как ресурс, чтобы помочь другим людям. Контекстом проблемы является создание программы чтения RSS. В то время как даты RSS должны соответствовать RFC822, они делают это по-разному, поэтому вам нужен гибкий метод. Я пытался использовать GWT DateTimeFormat, а также жестко кодировать некоторые разные маски, но продолжал находить тестовые случаи, которые нарушали мой код. Я наконец наткнулся на элегантное решение:

Завершение вызова метода javascript Date.parse (). это действительно "просто работает".

Как мета-теория, которую я попытаюсь проверить, продолжая разработку, вероятно, есть много вещей, которые "просто работают", используя нативный JavaScript или другие библиотеки, вместо того, чтобы пытаться грубой силой это с помощью Java в GWT.

Ура!

1 Ответ

3 голосов
/ 21 июля 2010

Используйте встроенную обработку Javascript в JSNI, чтобы обернуть вызов метода Date.parse () javascript.Он может обрабатывать гораздо больше форматов, чем DateTimeFormat GWT.

Приведенный ниже код демонстрирует демонстрацию.Обратите внимание, что 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;
      }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...