使用iCal4j设置活动时间

时间:2014-10-14 14:23:07

标签: java icalendar ical4j

我试图将简单的导出功能实现到ics文件中。导出的事件很好,但是存在时间问题 - 它们在导出的文件中缺失但以原始格式存在。这是代码:

TimeZone timeZone = TimeZone.getTimeZone(e.getOrder()。getTimeZone()); long timeZoneOffset = TimeUnit.MILLISECONDS.toMinutes(timeZone.getOffset(now.getTime()));

startDate = new net.fortuna.ical4j.model.Date(DateUtils.addMinutes(e.getStartDateTime(), (int) timeZoneOffset).getTime());
endDate = new net.fortuna.ical4j.model.Date(DateUtils.addMinutes(e.getEndDateTime(), (int) timeZoneOffset).getTime());
event = new VEvent(startDate, endDate, e.getOrder().getDescription());
event.getProperties().add(TimeZoneRegistryFactory.getInstance().createRegistry().getTimeZone(e.getOrder().getTimeZone()).getVTimeZone().getTimeZoneId());
event.getProperties().add(new UidGenerator("CA").generateUid());
calendar.getComponents().add(event);

我错过了什么?提前谢谢!

1 个答案:

答案 0 :(得分:2)

我无法重现您的代码,因为您没有完全正确地粘贴您的代码示例(也许您可以这样做并包含导入?这样可以更轻松地回答您的问题)。

但是,你是否已经看过双周库(参见:http://sourceforge.net/projects/biweekly/)?对我来说这看起来非常简单:易于理解,你不需要乱用iCal4j Date / TimeZone类等等,这在我第一次偷看时看起来非常麻烦。

以下是一些示例代码,让您可以直观地了解它:

ICalendar icals = new ICalendar();
VEvent event = new VEvent();
event.setDateStart(new Date());
event.setDateEnd(new Date());
event.setDescription("some description");

icals.setProductId("some product ID");
icals.addEvent(event);

WriterChainText text = Biweekly.write(icals);
System.out.println(text.go());

可以通过Maven轻松包含:

<dependency>
    <groupId>net.sf.biweekly</groupId>
    <artifactId>biweekly</artifactId>
    <version>0.3.3</version>
</dependency>

希望有帮助吗?