0

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);

私が逃したものは何ですか?前もって感謝します!

4

1 に答える 1

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>

それが役立つことを願っていますか?

于 2014-10-14T17:41:36.607 に答える