Как разобрать строку даты, используя часовой пояс в GWT - PullRequest
4 голосов
/ 24 февраля 2011

Кто-нибудь преуспел в разборе строки даты с пользовательским часовым поясом в GWT?DateTimeFormat GWT позволяет форматировать даты на основе часового пояса, но я не нашел никакого способа для выполнения противоположной операции.Так что мне делать, если у меня есть следующая строка «02: 01: 2011» (формат «ММ: дд: гггг»).Он может иметь разные результаты в разных часовых поясах.

Другая проблема появляется при попытке изменить даты, месяцы и т. Д. Как я могу сделать это на основе пользовательского часового пояса?

библиотека, которая может упростить все эти операции?


Я сделал обходной путь и добавил часть часового пояса к каждой строке даты, которая пропускает эту часть.Все еще ищу более профессиональное решение.

Ответы [ 4 ]

5 голосов
/ 11 апреля 2011

Либо передайте часовой пояс клиенту с сервера (например, включите его в строку даты), либо стандартизируйте часовой пояс на сервере, чтобы клиент мог принять постоянный часовой пояс. Если вы включите часовой пояс со строкой даты, приведенный ниже фрагмент кода должен работать.

Я не проверял это, но согласно документам, это должно работать:

String dateStr = "04/21/2011 01:37:36 -0800;
DateTimeFormat format = new DateTimeFormat("MM/dd/yyyy HH:mm:ss Z");
Date date = format.parse(dateStr);

В зависимости от того, как вы представляете часовой пояс, вы можете изменить конечную переменную в строке формата (Z). Для получения дополнительной информации см. Документы: http://google -web-toolkit.googlecode.com / svn / javadoc / latest / com / google / gwt / i18n / client / DateTimeFormat.html

3 голосов
/ 13 августа 2012

Я сделал следующее для разбора даты в TimeZone tz. Это, вероятно, изворотливо, но это работает: -

final long MILLIS_IN_MINUTE = 60000;

Date localDate = DateTimeFormat.getFormat("dd MMM yyyy HH:mm:ss").parse(dateString);

int localOffset = localDate.getTimezoneOffset() * MILLIS_IN_MINUTE;
int targetOffset = tz.getOffset(localDate) * MILLIS_IN_MINUTE;

// Subtract the offset to make this into a UTC date.
return new Date(localDate.getTime() - localOffset + targetOffset);

Он анализирует дату в часовом поясе клиента, а затем подстраивает ее под нужный часовой пояс.

1 голос
/ 03 марта 2011

Недавно я передал этот проект: gwt-calendar-class , который эмулирует Calendar и TimeZone в javascript.

0 голосов
/ 25 февраля 2011
public static Date getDateGWT(final String strDate, final int style) {
        Date date = null;
        int useStyle = style;
        if (!validStyle(style)) {
            useStyle = DEFAULT_DATE_STYLE;
        }

        if ((strDate != null) && (strDate.trim().length() > 0)) {
            DateTimeFormat df = getDateFormatGWT(useStyle);
            try {
                date = df.parse(strDate);
            } catch (Exception e) {
                date = df.parse(date.toString());
            }
        }
        return date;
    }

     private static DateTimeFormat getDateTimeFormatGWT(final int style) {
        switch(style) {
        case SHORT:
            return DateTimeFormat.getShortDateTimeFormat();
        case MEDIUM:
            return DateTimeFormat.getMediumDateTimeFormat();
        case LONG:
            return DateTimeFormat.getLongDateTimeFormat();
        case FULL:
            return DateTimeFormat.getFullDateTimeFormat();
        default :
            return DateTimeFormat.getMediumDateTimeFormat();
        }        
   }

Попробуйте

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...