Skip to content

Commit 81e6bbc

Browse files
committed
Add test data
1 parent 741cc80 commit 81e6bbc

File tree

1 file changed

+195
-0
lines changed

1 file changed

+195
-0
lines changed

docs/cookbook/icalendarTimeZones.mjs

Lines changed: 195 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
/* eslint-disable no-console */
12
import * as Temporal from '../../polyfill/lib/temporal.mjs';
23
import ICAL from 'ical.js';
34

@@ -279,3 +280,197 @@ class ZonedDateTime {
279280
return this.toString();
280281
}
281282
}
283+
284+
const ianaCalendarEvent = ICAL.parse(`\
285+
BEGIN:VCALENDAR
286+
VERSION:2.0
287+
PRODID:Zimbra-Calendar-Provider
288+
BEGIN:VTIMEZONE
289+
TZID:America/Los_Angeles
290+
BEGIN:STANDARD
291+
DTSTART:19710101T020000
292+
TZOFFSETTO:-0800
293+
TZOFFSETFROM:-0700
294+
RRULE:FREQ=YEARLY;BYDAY=1SU;BYMONTH=11
295+
TZNAME:PST
296+
END:STANDARD
297+
BEGIN:DAYLIGHT
298+
DTSTART:19710101T020000
299+
TZOFFSETTO:-0700
300+
TZOFFSETFROM:-0800
301+
RRULE:FREQ=YEARLY;BYDAY=2SU;BYMONTH=3
302+
TZNAME:PDT
303+
END:DAYLIGHT
304+
END:VTIMEZONE
305+
BEGIN:VEVENT
306+
UID:44c10eaa-db0b-4223-8653-cf2b63f26326
307+
RRULE:FREQ=DAILY;BYDAY=MO,TU,WE,TH,FR
308+
SUMMARY:Calendar
309+
DESCRIPTION:desc
310+
ATTENDEE;CN=XXX;ROLE=REQ-PARTICIPANT;PARTSTAT=ACCEPTED;RSVP=TRU
311+
312+
ATTENDEE;CN=XXXX;ROLE=REQ-PARTICIPANT;PARTSTAT=ACCEPTED;RSVP=TR
313+
314+
ORGANIZER;CN=foobar:mailto:[email protected]
315+
DTSTART;TZID=America/Los_Angeles:20120911T103000
316+
DTEND;TZID=America/Los_Angeles:20120911T110000
317+
STATUS:CONFIRMED
318+
CLASS:PUBLIC
319+
TRANSP:OPAQUE
320+
LAST-MODIFIED:20120911T184851Z
321+
DTSTAMP:20120911T184851Z
322+
SEQUENCE:1
323+
BEGIN:VALARM
324+
ACTION:DISPLAY
325+
TRIGGER;RELATED=START:-PT5M
326+
DESCRIPTION:Reminder
327+
END:VALARM
328+
END:VEVENT
329+
END:VCALENDAR
330+
`);
331+
332+
const msCalendarEvent = ICAL.parse(`\
333+
BEGIN:VCALENDAR
334+
METHOD:REQUEST
335+
PRODID:Microsoft Exchange Server 2010
336+
VERSION:2.0
337+
BEGIN:VTIMEZONE
338+
TZID:US Mountain Standard Time
339+
BEGIN:STANDARD
340+
DTSTART:16010101T000000
341+
TZOFFSETFROM:-0700
342+
TZOFFSETTO:-0700
343+
END:STANDARD
344+
BEGIN:DAYLIGHT
345+
DTSTART:16010101T000000
346+
TZOFFSETFROM:-0700
347+
TZOFFSETTO:-0700
348+
END:DAYLIGHT
349+
END:VTIMEZONE
350+
BEGIN:VEVENT
351+
ORGANIZER;CN=Frank:mailto:[email protected]
352+
DESCRIPTION;LANGUAGE=en-US:Some description goes here
353+
UID:040000008200E00074C2B7101A82F00800000000FA2634575E11D901000000000000000
354+
0100000006D3FFDF37ED86F429B8315DBBE50E4D1
355+
SUMMARY;LANGUAGE=en-US:Technical Tag-Up
356+
DTSTART;TZID=US Mountain Standard Time:20221221T090000
357+
DTEND;TZID=US Mountain Standard Time:20221221T093000
358+
CLASS:PUBLIC
359+
PRIORITY:5
360+
DTSTAMP:20221216T145449Z
361+
TRANSP:OPAQUE
362+
STATUS:CONFIRMED
363+
SEQUENCE:0
364+
LOCATION;LANGUAGE=en-US:Virtual - Skype Meeting
365+
X-MICROSOFT-CDO-APPT-SEQUENCE:0
366+
X-MICROSOFT-CDO-OWNERAPPTID:2121040890
367+
X-MICROSOFT-CDO-BUSYSTATUS:TENTATIVE
368+
X-MICROSOFT-CDO-INTENDEDSTATUS:BUSY
369+
X-MICROSOFT-CDO-ALLDAYEVENT:FALSE
370+
X-MICROSOFT-CDO-IMPORTANCE:1
371+
X-MICROSOFT-CDO-INSTTYPE:0
372+
X-MICROSOFT-ONLINEMEETINGINFORMATION:{"OnlineMeetingChannelId":null\\,"Onlin
373+
eMeetingProvider":3}
374+
X-MICROSOFT-DONOTFORWARDMEETING:FALSE
375+
X-MICROSOFT-DISALLOW-COUNTER:FALSE
376+
X-MICROSOFT-LOCATIONDISPLAYNAME:Virtual - Skype Meeting
377+
X-MICROSOFT-LOCATIONSOURCE:None
378+
X-MICROSOFT-LOCATIONS:[{"DisplayName":"Virtual - Skype Meeting"\\,"LocationA
379+
nnotation":""\\,"LocationUri":""\\,"LocationStreet":""\\,"LocationCity":""\\,"
380+
LocationState":""\\,"LocationCountry":""\\,"LocationPostalCode":""\\,"Locatio
381+
nFullAddress":""}]
382+
BEGIN:VALARM
383+
DESCRIPTION:REMINDER
384+
TRIGGER;RELATED=START:-PT15M
385+
ACTION:DISPLAY
386+
END:VALARM
387+
END:VEVENT
388+
END:VCALENDAR
389+
`);
390+
391+
const msCalendarEvent2 = ICAL.parse(`\
392+
BEGIN:VCALENDAR
393+
METHOD:REQUEST
394+
PRODID:Microsoft Exchange Server 2010
395+
VERSION:2.0
396+
BEGIN:VTIMEZONE
397+
TZID:Pacific Standard Time
398+
BEGIN:STANDARD
399+
DTSTART:16010101T020000
400+
TZOFFSETFROM:-0700
401+
TZOFFSETTO:-0800
402+
RRULE:FREQ=YEARLY;INTERVAL=1;BYDAY=1SU;BYMONTH=11
403+
END:STANDARD
404+
BEGIN:DAYLIGHT
405+
DTSTART:16010101T020000
406+
TZOFFSETFROM:-0800
407+
TZOFFSETTO:-0700
408+
RRULE:FREQ=YEARLY;INTERVAL=1;BYDAY=2SU;BYMONTH=3
409+
END:DAYLIGHT
410+
END:VTIMEZONE
411+
BEGIN:VEVENT
412+
ORGANIZER;CN=Sean:mailto:[email protected]
413+
DESCRIPTION;LANGUAGE=en-US:\\nSome description
414+
UID:040000008200E00074C5B7101A87E00800000000E34E497CF42CD801000000000000000
415+
0100000003EFD63857B13AF41A430D32A1905BE7B
416+
RECURRENCE-ID;TZID=Pacific Standard Time:20221228T130000
417+
SUMMARY;LANGUAGE=en-US:Weekly Backlog Review
418+
DTSTART;TZID=Pacific Standard Time:20221229T130000
419+
DTEND;TZID=Pacific Standard Time:20221229T140000
420+
CLASS:PUBLIC
421+
PRIORITY:5
422+
DTSTAMP:20221220T010040Z
423+
TRANSP:OPAQUE
424+
STATUS:CONFIRMED
425+
SEQUENCE:22
426+
LOCATION;LANGUAGE=en-US:
427+
X-MICROSOFT-CDO-APPT-SEQUENCE:22
428+
X-MICROSOFT-CDO-OWNERAPPTID:2120410083
429+
X-MICROSOFT-CDO-BUSYSTATUS:TENTATIVE
430+
X-MICROSOFT-CDO-INTENDEDSTATUS:BUSY
431+
X-MICROSOFT-CDO-ALLDAYEVENT:FALSE
432+
X-MICROSOFT-CDO-IMPORTANCE:1
433+
X-MICROSOFT-CDO-INSTTYPE:3
434+
X-MICROSOFT-DONOTFORWARDMEETING:FALSE
435+
X-MICROSOFT-DISALLOW-COUNTER:FALSE
436+
X-MICROSOFT-LOCATIONS:[]
437+
BEGIN:VALARM
438+
DESCRIPTION:REMINDER
439+
TRIGGER;RELATED=START:-PT15M
440+
ACTION:DISPLAY
441+
END:VALARM
442+
END:VEVENT
443+
END:VCALENDAR
444+
`);
445+
446+
[ianaCalendarEvent, msCalendarEvent, msCalendarEvent2].forEach((jcalData) => {
447+
const component = new ICAL.Component(jcalData);
448+
const event = new ICAL.Event(component.getFirstSubcomponent('vevent'));
449+
const instantStart = Temporal.Instant.fromEpochMilliseconds(event.startDate.toUnixTime() * 1000);
450+
const zdt = ZonedDateTime.fromInstant(instantStart, event.startDate.zone);
451+
const instantEnd = Temporal.Instant.fromEpochMilliseconds(event.endDate.toUnixTime() * 1000);
452+
const zdtEnd = ZonedDateTime.fromInstant(instantEnd, event.endDate.zone);
453+
454+
console.log('--------');
455+
console.log(zdt.toString());
456+
console.log('fields', zdt.era, zdt.eraYear, zdt.year, zdt.month, zdt.monthCode, zdt.day);
457+
console.log(zdt.hour, zdt.minute, zdt.second, zdt.millisecond, zdt.microsecond, zdt.nanosecond);
458+
console.log('dayOfWeek', zdt.dayOfWeek);
459+
console.log('toPlainDateTime', zdt.toPlainDateTime().toString());
460+
console.log('offsetNanoseconds', zdt.offsetNanoseconds);
461+
console.log('offset', zdt.offset);
462+
console.log('epochMilliseconds', zdt.epochMilliseconds);
463+
console.log('epochNanoseconds', zdt.epochNanoseconds);
464+
console.log('startOfDay', zdt.startOfDay().toString());
465+
console.log('toInstant', zdt.toInstant().toString());
466+
console.log('toPlainDate', zdt.toPlainDate().toString());
467+
console.log('toPlainTime', zdt.toPlainTime().toString());
468+
console.log('withPlainTime', zdt.withPlainTime(Temporal.PlainTime.from('13:37')).toString());
469+
console.log('withCalendar', zdt.withCalendar('gregory').toString());
470+
console.log('add', zdt.add(Temporal.Duration.from('P1Y3DT2H30M')).toString());
471+
console.log('until', zdt.until(zdtEnd).toString());
472+
console.log(
473+
'use as relativeTo',
474+
Temporal.Duration.from('P1M15DT12H').round({ smallestUnit: 'day', relativeTo: zdt }).toString()
475+
);
476+
});

0 commit comments

Comments
 (0)