Official data first
Singapore dates come from the Ministry of Manpower (MOM) 2027 list. Malaysia federal and state dates come from the Prime Minister’s Department, Cabinet Division (BKPP) annual schedules. Each holiday row links to its source.
The python-holidays library is used only to cross-check official entries and estimate nearby 2028 dates before an official schedule exists. It does not decide replacement holidays. Best Leave Days does not use timeanddate data or APIs.
What the status labels mean
- Official
- Published in an official annual list or generated directly by a current statutory replacement rule.
- Pending
- Derived from documented state practice but waiting for the relevant 2027 state calendar or notice.
- Estimated
- Not yet in an official schedule, used only for the nearby 2028 planning window.
Replacement-holiday rules
sg-sunday
Holidays Act 1998 s 4(2). Saturday holidays do not create a public replacement day.
Applies to: SG · Trigger weekday: 7 · Move to: next non holiday day
Read the governing sourcemy-act369-sunday
Holidays Act 1951 s 3: a public holiday on the weekly holiday (Sunday) moves to the next day that is not already a public holiday. Not listed separately in the BKPP annual table.
Applies to: MY-01, MY-04, MY-05, MY-06, MY-07, MY-08, MY-09, MY-10, MY-14, MY-15, MY-16 · Trigger weekday: 7 · Move to: next non holiday day
Read the governing sourcemy-sabah-sunday
Sabah Holidays Ordinance (Cap. 56) s 3(3). Not listed separately in the BKPP annual table.
Applies to: MY-12 · Trigger weekday: 7 · Move to: next non holiday day
Read the governing sourcemy-sarawak-sunday
Sarawak Public Holidays Ordinance (Cap. 8). Not listed separately in the BKPP annual table.
Applies to: MY-13 · Trigger weekday: 7 · Move to: next non holiday day
Read the governing sourcemy-kelantan-saturday
Kelantan state practice: Saturday holiday moves to Sunday; Friday holidays are not replaced. Pending until the 2027 Kelantan state calendar confirms it.
Applies to: MY-03 · Trigger weekday: 6 · Move to: next non holiday day
Read the governing sourcemy-terengganu-saturday
Terengganu state practice (2017 official schedule): Saturday holiday moves to Sunday; Friday holidays are not replaced. Pending until the 2027 Terengganu state calendar confirms it.
Applies to: MY-11 · Trigger weekday: 6 · Move to: next non holiday day
Read the governing sourcemy-kedah-friday
Kedah 2026 documents conflict (next day vs next working day). Saturday holidays are not replaced. No Kedah Friday holiday falls in 2027; only 2026-12-25 is affected.
Applies to: MY-02 · Trigger weekday: 5 · Move to: next working day
Read the governing sourceKey legislation includes Singapore’s Holidays Act 1998 and Employment Act 1968 s 88; Malaysia’s Holidays Act 1951 and Employment Act 1955 s 60D; the Sabah Holidays Ordinance and Sarawak Public Holidays Ordinance.
How plans are calculated
The planner marks each date as a working day, weekend or holiday using the selected region. It finds consecutive breaks anchored to a real holiday, then tests which working dates must be taken as annual leave. It will not recommend an ordinary “take Friday off” weekend with no effective holiday.
Leave cost is stored in half-day units, so no floating-point arithmetic is needed. Annual leave can only be spent on working dates in 2027, although a break may extend into December 2026 or January 2028. Two selected breaks must have at least one working day between them.
There is no single weighted “best” answer. Pages show a plan for the most total days off and another for the longest continuous break. Holiday opportunities keep the useful cost steps and remove intermediate options that add no extra value.