|
| 1 | +/* eslint-disable no-console */ |
1 | 2 | import * as Temporal from '../../polyfill/lib/temporal.mjs'; |
2 | 3 | import ICAL from 'ical.js'; |
3 | 4 |
|
@@ -279,3 +280,197 @@ class ZonedDateTime { |
279 | 280 | return this.toString(); |
280 | 281 | } |
281 | 282 | } |
| 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