【问题标题】:Set event's time with iCal4j使用 iCal4j 设置活动时间
【发布时间】:2014-10-15 01:46:48
【问题描述】:

我试图在 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);

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

【问题讨论】:

    标签: java icalendar ical4j


    【解决方案1】:

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

    但是,您是否已经看过 biweekly 库(参见: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>
    

    希望有帮助吗?

    【讨论】:

      猜你喜欢
      • 2014-07-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-03-14
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多