提问人:Sivaranjani Duraisamy 提问时间:11/10/2023 最后编辑:Sivaranjani Duraisamy 更新时间:11/11/2023 访问量:30
创建 ical 文件,不附加 UTC 的 Z
Creating the ical file not appending Z for UTC
问:
我有以下代码,它成功生成了ics文件。但是我希望 DTSTART 在末尾附加 Z,因为它是 UTC,但这并没有发生。
public class IcalGenerator {
public static void main(String[] args) {
/* Create the event */
String eventSummary = "New Year";
LocalDateTime start = LocalDateTime.now(ZoneId.of("UTC"));
VEvent event = new VEvent(start, Duration.of(30, ChronoUnit.MINUTES), eventSummary);
event.add(new Clazz(Clazz.VALUE_PUBLIC));
event.add(new Description("New meeting"));
/* Create calendar */
Calendar icsCalendar = new Calendar();
var version = new Version();
version.setValue(Version.VALUE_2_0);
icsCalendar.add(version);
// Set the location
Location location = new Location("Conference Room");
// Add the Location to the event
event.add(location);
/* Add event to calendar */
icsCalendar.add(event);
/* Create a file */
String filePath = "my_meeting.ics";
FileOutputStream out = null;
try {
out = new FileOutputStream(filePath);
CalendarOutputter outputter = new CalendarOutputter();
outputter.output(icsCalendar, out);
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (ValidationException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
if (out != null) {
try {
out.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
}
你能帮我缺少什么吗?我最终想要 DTSTART:20231110T164148Z 而不是 DTSTART:20231110T164148
当我手动附加 Z 时,它效果很好。
答:
0赞
fortuna
11/11/2023
#1
以下是 ical4j 单元测试中的一些示例:
date | expectedString
LocalDate.of(2023, 11, 10) | 'DTSTART;VALUE=DATE:20231110\r\n'
LocalDateTime.of(2023, 11, 10, 1, 1, 1) | 'DTSTART:20231110T010101\r\n'
LocalDateTime.of(2023, 11, 10, 1, 1, 1)
.atZone(ZoneId.of('Australia/Melbourne')) | 'DTSTART;TZID=Australia/Melbourne:20231110T010101\r\n'
LocalDateTime.of(2023, 11, 10, 1, 1, 1)
.toInstant(ZoneOffset.UTC) | 'DTSTART:20231110T010101Z\r\n'
目前 a 在 ical4j 中被解释为浮点时间,因此您需要使用它来表示 UTC。LocalDateTime
Instant
评论
LocalDateTime
没有时区信息;如果使用 OR 和 UTC 作为时区,会发生什么情况?(我不知道,所以只是猜测)OffsetDateTime
ZonedDateTime
VEvent