双周时区未针对所有用户正确设置

问题描述 投票:0回答:1

我目前正在尝试发送日历邀请,我为此编写了以下代码:

    private void setEventProperties(VEvent vEvent, CalendarDto dto){
        vEvent.setSummary(dto.getTitle());
        vEvent.setDescription(dto.getDescription());

        vEvent.setDateStart(Date.from(dto.getStartDate()));
        vEvent.setDateEnd(Date.from(dto.getEndDate()));
        vEvent.setOrganizer(dto.getOrganizer());
        vEvent.setLocation((String) dto.getMeetingInfo().get("meetingUrl"));
        vEvent.setUrl((String) dto.getMeetingInfo().get("meetingUrl"));
        for(Attendee attendee: dto.getAttendees()){
            attendee.setParticipationLevel(ParticipationLevel.REQUIRED);
            vEvent.addAttendee(attendee);
        }
    }
    private String createCalendar(String uuid, CalendarDto dto){
        ICalendar  iCalendar = new ICalendar();
        TimeZone javaTz = TimeZone.getTimeZone("Europe/Istanbul");
        String globalId = "Europe/Istanbul";
        TimezoneAssignment istanbul = new TimezoneAssignment(javaTz, globalId);
        iCalendar.getTimezoneInfo().setDefaultTimezone(istanbul);

        iCalendar.addProperty(new Method(Method.REQUEST));
        iCalendar.setProductId("----");
        VEvent vEvent = new VEvent();
        vEvent.setUid(uuid);
        vEvent.setStatus(Status.confirmed());
        vEvent.setSequence(0);
        Date createdDate = new Date();
        vEvent.setCreated(createdDate);
        vEvent.setLastModified(createdDate);
        setEventProperties(vEvent, dto);
        iCalendar.addEvent(vEvent);
        log.info("Calendar event created with id = '{}'", vEvent.getUid().getValue());
        return Biweekly.write(iCalendar).go();
    }

这里我尝试将时区设置为“欧洲/伊斯坦布尔”,即 GMT+3,但在 gmail 中它被写为 UTC。我还检查了生成的ics文件。

DTSTAMP:20240123T205158Z 状态:已确认 序列:0 创建时间:20240123T205158Z 最后修改:20240123T205158Z DTSTART;TZID=/欧洲/伊斯坦布尔:20240124T130000 DTEND;TZID=/欧洲/伊斯坦布尔:20240124T140000

它在ics文件中设置时区正确,但在gmail中显示如下。 Example

造成这种行为的原因可能是什么?我已经用不同的 gmail 尝试过,在某些帐户中它正确设置为 GMT+3,但我不知道原因。 版本:biweekly-0.6.7 Java-17

java icalendar biweekly
1个回答
0
投票

这实际上是我的错误。我的一些 Gmail 地址有不同的时区。这就是为什么我将时区设置为 UTC 的原因。抱歉问这个问题!

© www.soinside.com 2019 - 2024. All rights reserved.