如何从黑莓上的日期格式“MMM dd,yyyy”获得长期价值

时间:2012-02-28 12:47:52

标签: blackberry java-me

我收到了来自Server的回复,如下所示

<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日历中看到,2011年12月31日的信息显示

问题发生在下面。

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

返回-1值。

如何从黑莓上的日期格式“MMM dd,yyyy”中获取长值。

请帮助我。

1 个答案:

答案 0 :(得分:1)

正如Joel所注意到的,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
    }

根据我的测试,HttpDateParser不会考虑 Wdy 。它会在任何有效的工作日返回正确的结果。这对我来说很有意义,因为真正需要的是DAY,MONTH和YEAR。