Как получить длинное значение из этого формата даты "MMM dd, yyyy" на ежевике - PullRequest
0 голосов
/ 28 февраля 2012

Я получил ответ от сервера, как показано ниже

<reminder><text>Hello Dude!</text><date>June 2, 2011</date></reminder>

Я успешно проанализировал информацию. Теперь мне нужно добавить информацию о напоминании ежевики.

Я использовал ниже код:

try
{

    Event _event;

    String Calenderevent = "Hello Dude.";

    EventList eventList = (EventList) PIM.getInstance().openPIMList(PIM.EVENT_LIST, PIM.WRITE_ONLY);

    _event = eventList.createEvent();

    long l= HttpDateParser.parse("June 2, 2011");

    _event.addString(Event.SUMMARY, PIMItem.ATTR_NONE,Calenderevent);
    _event.addDate(Event.START, PIMItem.ATTR_NONE, l);
    RepeatRule rule = new RepeatRule();
    rule.setInt(RepeatRule.FREQUENCY,RepeatRule.YEARLY);
    _event.setRepeat(rule);
    //If you need to repeat the event then use repeatrule.

    _event.commit();

    Dialog.alert("Calendar event success.");
} 
catch (PIMException e)
{
    Dialog.alert("Exception: "+e);
    e.printStackTrace(); 
}

Когда я увидел в календаре Blackberry, информационное шоу 31 декабря 2011 года

Проблема возникает в нижней строке.

long l= HttpDateParser.parse("June 2, 2011");

Возвращает значение -1. ​​

Как получить длинное значение из этого формата даты "MMM dd, yyyy" на blackberry.

Пожалуйста, помогите мне.

1 Ответ

1 голос
/ 28 февраля 2012

Как заметил Джоэл, ваш формат даты не поддерживается HttpDateParser. Одним из возможных решений было бы преобразование вашей даты в один из форматов, поддерживаемых HttpDateParser, а затем анализ ее с помощью метода parse().

Этот код преобразует вашу дату в формат Wdy, Mon DD YYYY HHMMSS , а затем анализирует ее.

    String date = "June 2, 2011";       
    String time = "120000"; // desired time HHMMSS

    long l = 0;

    try {
        StringBuffer sbDate = new StringBuffer();

        // append WEEKDAY. weekday is not relevant for the HttpParser.
        sbDate.append("Sun, ");

        // remove comma after month
        int commaIndex = date.indexOf(","); 
        sbDate.append(date.substring(0, commaIndex));
        sbDate.append(date.substring(commaIndex+1));

        sbDate.append(' ').append(time);

        l=HttpDateParser.parse(sbDate.toString());

    } catch (IndexOutOfBoundsException e) {
        // the date is in wrong format
    }

Из проведенных мною испытаний Wdy не учитывается HttpDateParser. Он возвращает правильный результат с любым действительным днем ​​недели. Это имеет смысл для меня, поскольку на самом деле нужны ДЕНЬ, МЕСЯЦ и ГОД.

...