Practical guide

Add Chinese Festival Dates Without a Wrong Yearly Repeat

For a moving Chinese lunar festival, check each year’s Gregorian date and add a separate dated event. Do not repeat last year’s Gregorian month and day. The HKO tables put lunar New Year on 17 February 2026 and 6 February 2027, so repeating 17 February annually would miss the second date.

Families and teachers maintaining a small digital Chinese-festival calendar, rather than developers implementing a general calendar service · 6 minute read · Published

Compare two annual rows before choosing Repeat

Scroll sideways inside the table to read every column.

One lunar rule, two Gregorian dates
Chinese-calendar occasionAnnual HKO resultCalendar action
New Year, lunar month 1 day 1, 202617 February 2026Create the event for this exact day.
New Year, lunar month 1 day 1, 20276 February 2027Create the separately checked event; do not inherit 17 February.

The two source rows are calendar facts [1, 2]. A calendar program’s ordinary yearly date repeat does not perform the separate lunar conversion shown here. RFC 5545 gives an annual anniversary example whose Gregorian start date repeats with RRULE:FREQ=YEARLY. [3] That pattern alone cannot produce both of these checked New Year dates.

This guide concerns a small personal list of Chinese-calendar occasions. It does not implement lunar-calendar arithmetic, event bookings, a public-holiday service or a perpetual festival feed. For a family’s lunar birthday or leap-month custom, confirm the family’s actual rule before deciding which date to add.

Read the original two-event example before adding it

Download the original two-event iCalendar file. It contains only the two checked New Year dates. The 2026 entry is a historical comparison; this is not a list of upcoming festivals or personal days off.

Each event has its own UID, UTC DTSTAMP and DTSTART;VALUE=DATE. It has no RRULE. The shown all-day start has no clock time: the date is taken from the named HKO table, not from a conversion of midnight in your device timezone. [3]

Here is the 2027 event from the original file. Because no METHOD is supplied, DTSTAMP records when this example’s event information was last revised, rather than the festival’s starting hour.

BEGIN:VEVENT
UID:festival-example-newyear-2027@chinesefestivalcalendar.com
DTSTAMP:20261105T161241Z
DTSTART;VALUE=DATE:20270206
DTEND;VALUE=DATE:20270207
SUMMARY:Chinese lunar New Year 2027 - HKO calendar date
END:VEVENT

Why the all-day end says 7 February

RFC 5545 defines an event’s start as inclusive and its end as non-inclusive. An all-day DATE start must use a DATE end if an end is supplied. [3] For the single day 6 February 2027, the example therefore ends on 7 February. That does not mean New Year’s first day lasts two days.

Read the event’s date rather than adding 23:59 or inventing a timezone offset. This file is an all-day date example. A real dinner or performance with a clock time is a different event and needs its organiser’s local date, time and any applicable timezone information.

Our static checks verify the two source dates, unique identifiers, required fields, UTC timestamps, matching DATE types, one-day exclusive ends, CRLF line endings and content-line lengths. They do not establish how a particular application will display or deduplicate the file.

Distinguish this download from an actual maintained subscription

Use the calendar provider’s current instructions for adding a file, then inspect the two resulting dates and the calendar name before relying on them. An import is not a promise of later corrections. This downloadable example contains no 2028 event and offers no update endpoint. Do not turn its URL into an alleged perpetual subscription.

For Hong Kong general holidays, 1823 provides an actual published subscription route and describes synchronisation and supported years. Its page currently states 2025–2027 and follows the gazette rather than a complete traditional festival list. [4] Use its current instructions if that is the information you need.

If an old annual repeat already exists, identify which calendar and event it belongs to. Keep the correctly dated event before editing the old repeat. Inspect duplicates and the following year afterward; this article has not accessed your account or confirmed an application’s deletion behaviour.

Four original file-and-date checks

These are constructed examples of reading date fields, not tests run in Google Calendar, Apple Calendar or Outlook.

Check 1: The checked 2026 date is 17 February. Can an ordinary yearly repeat of that date supply the checked 2027 New Year date?

No. HKO places the 2027 date on 6 February.

Add a separately checked date rather than assuming the same Gregorian month and day.

Check 2: The all-day start is 20270206 and the end is 20270207. Does the file describe two occupied calendar days?

No. It describes 6 February with an exclusive end.

RFC 5545 defines the VEVENT end as non-inclusive.

Check 3: The file contains only 2026 and 2027 events. Is a 2028 date or later update supplied?

No. Neither is present.

A finite static file cannot establish dates or synchronisation it does not supply.

Check 4: An official public-holiday feed omits a festival that is not a gazetted holiday. Is it a complete festival-date source?

No. Read and retain its stated public-holiday scope.

1823 explicitly separates its gazetted holidays from a traditional-festival service.

Keep an explicit list of the years you have checked

Your finished record should name the occasion, annual table, exact date, calendar name and repeat setting. Mark the next year as checked only after locating its actual row. A blank next-year field is more useful than a silently inherited wrong date.

The festival date-check guide handles lunar-month reading. For a holiday-versus-festival discrepancy, compare the official jurisdiction’s labels. For an actual event, use its own current announcement.

Download the blank digital-calendar record (TXT).

When a calendar entry names a day off rather than the festival, compare the 2026 and 2027 Hong Kong festival and general-holiday fields before changing its date.

Sources and further reading

  1. HKO: 2026 daily table17 February 2026 month 1 day 1.
  2. HKO: 2027 daily table6 February 2027 month 1 day 1.
  3. RFC 5545: iCalendarRead sections 3.3.4, 3.6.1, 3.7.3–4, 3.8.2.2, 3.8.2.4, 3.8.4.7, 3.8.7.2 and relevant line-folding/recurrence paragraphs; no entire-RFC reading claim.
  4. 1823: official Hong Kong Public Holidays iCalStated subscription scope and coverage. No application tested.