java生成ICS

 

pom.xml 添加maven jar

       <!-- ical4j begin-->
        <dependency>
            <groupId>org.mnode.ical4j</groupId>
            <artifactId>ical4j</artifactId>
            <version>1.0.2</version>
        </dependency>
        <!-- ical4j end--> 







實現代碼:



@Test
    public void exportIcs(){
        try {
            // 創建一個時區(TimeZone)
            TimeZoneRegistry registry = TimeZoneRegistryFactory.getInstance().createRegistry();
            TimeZone timezone = registry.getTimeZone("GMT");
            VTimeZone tz = timezone.getVTimeZone();

            // 創建日曆
            Calendar calendar = new Calendar();
            calendar.getProperties().add(new ProdId("-//Ben Fortuna//iCal4j 1.0//EN"));
            calendar.getProperties().add(Version.VERSION_2_0);
            calendar.getProperties().add(CalScale.GREGORIAN);

            // 時間主題
            String summary = "Signum showroom opening in San Francisco, USA";
            // 開始時間
            DateTime start = new DateTime(1679121035000l);
            // 開始時間轉換爲UTC時間(UTC + 時區差 = 本地時間 )
            start.setUtc(true);
            // 結束時間
            DateTime end = new DateTime(1679128235000l);
            // 結束時間設置成UTC時間(UTC + 時區差 = 本地時間 )
            end.setUtc(true);
            // 新建普通事件
            // VEvent event = new VEvent(start, end, summary);
            // 定義全天事件(注意默認是UTC時間)
            VEvent event = new VEvent(new Date(1679121035000l), new Date(1679128235000l), summary);
            event.getProperties().add(new Location("Yongsan-gu, San Francisco, USA."));
            // 生成唯一標示
            event.getProperties().add(new Uid(new UidGenerator("iCal4j").generateUid().getValue()));
            // 添加時區信息
            event.getProperties().add(tz.getTimeZoneId());
            // 添加邀請者
            Attendee dev1 = new Attendee(URI.create("mailto:[email protected]"));
            dev1.getParameters().add(Role.REQ_PARTICIPANT);
//            dev1.getParameters().add(new Cn("Robert Zhou"));

            Attendee dev2 = new Attendee(URI.create("mailto:[email protected]"));
            dev2.getParameters().add(Role.REQ_PARTICIPANT);
//            dev2.getParameters().add(new Cn("Sam"));

            event.getProperties().add(dev1);
            event.getProperties().add(dev2);
            // 重複事件
//            Recur recur = new Recur(Recur.WEEKLY, Integer.MAX_VALUE);
//            recur.getDayList().add(WeekDay.MO);
//            recur.getDayList().add(WeekDay.TU);
//            recur.getDayList().add(WeekDay.WE);
//            recur.getDayList().add(WeekDay.TH);
//            recur.getDayList().add(WeekDay.FR);
//            RRule rule = new RRule(recur);
//            event.getProperties().add(rule);
            // 提醒,提前30分鐘
            VAlarm valarm = new VAlarm(new Dur(0, 0, -30, 0));
//            valarm.getProperties().add(new Summary("Meeting events 20230318"));
            valarm.getProperties().add(Action.DISPLAY);
            valarm.getProperties().add(new Description("showroom"));
            // 將VAlarm加入VEvent
            event.getAlarms().add(valarm);
            // 添加事件
            calendar.getComponents().add(event);
            // 驗證
            calendar.validate();
            FileOutputStream fout = new FileOutputStream("D://my.ics");
            CalendarOutputter outputter = new CalendarOutputter();
            outputter.output(calendar, fout);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章