我收到了来自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”中获取长值。
请帮助我。
答案 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。