<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Nakayama Yuta</title>
    <description>The latest articles on DEV Community by Nakayama Yuta (@nakayama_yuta).</description>
    <link>https://dev.to/nakayama_yuta</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4119415%2F83c5bdfc-cbbd-4769-bd9a-e25e08fb295d.jpg</url>
      <title>DEV Community: Nakayama Yuta</title>
      <link>https://dev.to/nakayama_yuta</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/nakayama_yuta"/>
    <language>en</language>
    <item>
      <title>Japanese Holidays Are Harder Than You Think: Substitute Holidays, Business Days &amp; Wareki</title>
      <dc:creator>Nakayama Yuta</dc:creator>
      <pubDate>Thu, 10 Sep 2026 13:30:25 +0000</pubDate>
      <link>https://dev.to/nakayama_yuta/japanese-holidays-are-harder-than-you-think-substitute-holidays-business-days-wareki-7ad</link>
      <guid>https://dev.to/nakayama_yuta/japanese-holidays-are-harder-than-you-think-substitute-holidays-business-days-wareki-7ad</guid>
      <description>&lt;blockquote&gt;
&lt;p&gt;This is a draft for dev.to. When you're happy with it, set &lt;code&gt;published: false&lt;/code&gt; to &lt;code&gt;published: true&lt;/code&gt;.&lt;br&gt;
Replace &lt;code&gt;YOUR_RAPIDAPI_KEY&lt;/code&gt; and the host name with the real values from your API's &lt;strong&gt;Code Snippets&lt;/strong&gt; page on RapidAPI.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  Working with Japanese dates is surprisingly painful
&lt;/h2&gt;

&lt;p&gt;If you're building (or localizing) a product for the Japanese market, you'll eventually hit a wall that looks trivial but isn't: &lt;strong&gt;Japanese public holidays and business-day calculations.&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;"Set the invoice due date to 3 business days later, skipping weekends &lt;em&gt;and&lt;/em&gt; holidays."&lt;/li&gt;
&lt;li&gt;"Estimate the delivery date, skipping national holidays."&lt;/li&gt;
&lt;li&gt;"Show dates in the Japanese era format (Reiwa 8)."&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Each sounds easy. Then you try to implement Japanese holiday rules correctly, and you fall straight into a swamp. Let's look at &lt;em&gt;why&lt;/em&gt;, and then at a way to get it done accurately without maintaining all of it yourself.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why it's hard — four traps
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Trap 1: The equinox holidays move every year
&lt;/h3&gt;

&lt;p&gt;Vernal Equinox Day (春分の日, March) and Autumnal Equinox Day (秋分の日, September) are astronomically determined, so the exact date shifts year to year. You can't hard-code them. A common approximation (valid ~1980–2099):&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="c1"&gt;// Vernal Equinox Day (March)&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;vernal&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;y&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt;
  &lt;span class="nb"&gt;Math&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;floor&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mf"&gt;20.8431&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="mf"&gt;0.242194&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;y&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="mi"&gt;1980&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="nb"&gt;Math&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;floor&lt;/span&gt;&lt;span class="p"&gt;((&lt;/span&gt;&lt;span class="nx"&gt;y&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="mi"&gt;1980&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt; &lt;span class="mi"&gt;4&lt;/span&gt;&lt;span class="p"&gt;));&lt;/span&gt;
&lt;span class="c1"&gt;// Autumnal Equinox Day (September)&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;autumnal&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;y&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt;
  &lt;span class="nb"&gt;Math&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;floor&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mf"&gt;23.2488&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="mf"&gt;0.242194&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;y&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="mi"&gt;1980&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="nb"&gt;Math&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;floor&lt;/span&gt;&lt;span class="p"&gt;((&lt;/span&gt;&lt;span class="nx"&gt;y&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="mi"&gt;1980&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt; &lt;span class="mi"&gt;4&lt;/span&gt;&lt;span class="p"&gt;));&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Trap 2: "Happy Monday" holidays
&lt;/h3&gt;

&lt;p&gt;Coming-of-Age Day (2nd Monday of January), Marine Day (3rd Monday of July), Respect-for-the-Aged Day (3rd Monday of September) and Sports Day (2nd Monday of October) float to a specific Monday. You need weekday math, not fixed dates.&lt;/p&gt;

&lt;h3&gt;
  
  
  Trap 3: Substitute holidays (振替休日)
&lt;/h3&gt;

&lt;p&gt;When a public holiday falls on a Sunday, a following weekday becomes a holiday — and it is &lt;strong&gt;not always the next Monday&lt;/strong&gt;. Take Japan's Golden Week in &lt;strong&gt;2026&lt;/strong&gt;: May 3rd (Constitution Day) is a Sunday, so the substitute skips over the May 4th and 5th holidays and lands on &lt;strong&gt;May 6th&lt;/strong&gt;. If you naively code "Sunday → next day," you get it wrong.&lt;/p&gt;

&lt;h3&gt;
  
  
  Trap 4: The "Citizen's Holiday" (国民の休日)
&lt;/h3&gt;

&lt;p&gt;A weekday sandwiched between two public holidays also becomes a holiday. The classic case is &lt;strong&gt;September 22, 2026&lt;/strong&gt;: it sits between Respect-for-the-Aged Day (Sep 21) and Autumnal Equinox Day (Sep 23), so that Tuesday becomes a holiday too. If you don't know this rule exists, you &lt;em&gt;will&lt;/em&gt; miss it.&lt;/p&gt;

&lt;p&gt;On top of all that, one-off legislation occasionally moves holidays for a single year (as in 2020 and 2021 for the Olympics). &lt;strong&gt;Just maintaining an accurate holiday calendar is real work.&lt;/strong&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  The shortcut: solve it with an API
&lt;/h2&gt;

&lt;p&gt;Writing and maintaining all of the above yourself is a lot. So here's an API that returns Japanese holidays, business-day math, and era (Wareki) conversion out of the box.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Japanese Holidays and Business Day API&lt;/strong&gt; (on RapidAPI)&lt;/p&gt;

&lt;p&gt;Holidays are computed according to the Japanese Cabinet Office's official definition of public holidays, and it covers &lt;strong&gt;substitute holidays, citizen's holidays, and the Olympic-year exceptions&lt;/strong&gt;. Five endpoints:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Endpoint&lt;/th&gt;
&lt;th&gt;Purpose&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;GET /v1/holidays?year=2026&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;All holidays for a year&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;GET /v1/holidays/check?date=2026-09-22&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Is this date a holiday? (with type)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;GET /v1/business-days/add?date=2026-05-01&amp;amp;days=3&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Add N business days (negative = before)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;GET /v1/business-days/count?from=...&amp;amp;to=...&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Business days in a range&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;GET /v1/wareki?date=2026-09-10&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Gregorian → Japanese era&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h2&gt;
  
  
  Try it
&lt;/h2&gt;

&lt;p&gt;Requests go through RapidAPI. Copy the host and &lt;code&gt;X-RapidAPI-Key&lt;/code&gt; from the &lt;strong&gt;Code Snippets&lt;/strong&gt; tab on the API's RapidAPI page (the host may differ slightly).&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;⚠️ Keep your API key out of source and public posts — read it from an environment variable.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h3&gt;
  
  
  curl
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;curl &lt;span class="nt"&gt;--request&lt;/span&gt; GET &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--url&lt;/span&gt; &lt;span class="s1"&gt;'https://japanese-holidays-and-business-day-api.p.rapidapi.com/v1/holidays/check?date=2026-09-22'&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--header&lt;/span&gt; &lt;span class="s1"&gt;'X-RapidAPI-Key: YOUR_RAPIDAPI_KEY'&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--header&lt;/span&gt; &lt;span class="s1"&gt;'X-RapidAPI-Host: japanese-holidays-and-business-day-api.p.rapidapi.com'&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Response:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"date"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"2026-09-22"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"is_holiday"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"name"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"国民の休日"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"type"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"national_gap"&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;code&gt;type&lt;/code&gt; is one of &lt;code&gt;national_holiday&lt;/code&gt;, &lt;code&gt;substitute&lt;/code&gt;, or &lt;code&gt;national_gap&lt;/code&gt;, so you can branch on the kind of holiday.&lt;/p&gt;

&lt;h3&gt;
  
  
  JavaScript
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;HOST&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;japanese-holidays-and-business-day-api.p.rapidapi.com&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;KEY&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;process&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;env&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;RAPIDAPI_KEY&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="k"&gt;async&lt;/span&gt; &lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nf"&gt;checkHoliday&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;date&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;res&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nf"&gt;fetch&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;`https://&lt;/span&gt;&lt;span class="p"&gt;${&lt;/span&gt;&lt;span class="nx"&gt;HOST&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;/v1/holidays/check?date=&lt;/span&gt;&lt;span class="p"&gt;${&lt;/span&gt;&lt;span class="nx"&gt;date&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;`&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="na"&gt;headers&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;X-RapidAPI-Key&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;KEY&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;X-RapidAPI-Host&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;HOST&lt;/span&gt; &lt;span class="p"&gt;},&lt;/span&gt;
  &lt;span class="p"&gt;});&lt;/span&gt;
  &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="nx"&gt;res&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;json&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nf"&gt;checkHoliday&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;2026-09-22&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;));&lt;/span&gt;
&lt;span class="c1"&gt;// { date: '2026-09-22', is_holiday: true, name: '国民の休日', type: 'national_gap' }&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Python
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;os&lt;/span&gt;
&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;requests&lt;/span&gt;

&lt;span class="n"&gt;HOST&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;japanese-holidays-and-business-day-api.p.rapidapi.com&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;
&lt;span class="n"&gt;headers&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;X-RapidAPI-Key&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;os&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;environ&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;RAPIDAPI_KEY&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;
    &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;X-RapidAPI-Host&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;HOST&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="n"&gt;res&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;requests&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;get&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="sa"&gt;f&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;https://&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;HOST&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s"&gt;/v1/business-days/add&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;headers&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;headers&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;params&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;date&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;2026-05-01&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;days&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt;
&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;res&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;json&lt;/span&gt;&lt;span class="p"&gt;())&lt;/span&gt;
&lt;span class="c1"&gt;# {'date': '2026-05-01', 'days': 3, 'result_date': '2026-05-11'}
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Note that 3 business days after &lt;code&gt;2026-05-01&lt;/code&gt; (Friday) lands on &lt;code&gt;2026-05-11&lt;/code&gt; (Monday) — correctly skipping the weekend &lt;em&gt;and&lt;/em&gt; the Golden Week holidays (including the May 6th substitute holiday).&lt;/p&gt;

&lt;h3&gt;
  
  
  Era (Wareki) conversion
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;curl &lt;span class="s1"&gt;'.../v1/wareki?date=2026-09-10'&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-H&lt;/span&gt; &lt;span class="s1"&gt;'X-RapidAPI-Key: YOUR_RAPIDAPI_KEY'&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-H&lt;/span&gt; &lt;span class="s1"&gt;'X-RapidAPI-Host: japanese-holidays-and-business-day-api.p.rapidapi.com'&lt;/span&gt;
&lt;span class="c"&gt;# → { "date": "2026-09-10", "era": "令和", "year": 8, "text": "令和8年" }&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Notes &amp;amp; limits
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Holidays follow the Japanese Cabinet Office definition of public holidays. Supported range is 1980–2099, most accurate from 2020 onward.&lt;/li&gt;
&lt;li&gt;Responses include a data-source attribution field.&lt;/li&gt;
&lt;li&gt;There's a free tier to try it out, plus paid plans for production use.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Wrapping up
&lt;/h2&gt;

&lt;p&gt;Japanese holidays and business days look trivial but hide real complexity: equinox dates, Happy Monday holidays, substitute holidays, and citizen's holidays. Instead of building and maintaining all of it yourself, you can offload it to an API and get an accurate answer in a single call.&lt;/p&gt;

&lt;p&gt;If you're dealing with Japanese date logic in your app, give it a try.&lt;/p&gt;

&lt;p&gt;👉 &lt;strong&gt;Japanese Holidays and Business Day API&lt;/strong&gt; — search "Japanese Holidays" on RapidAPI.&lt;/p&gt;

&lt;p&gt;👉 &lt;a href="https://rapidapi.com/tenjingon/api/japanese-holidays-and-business-day-api" rel="noopener noreferrer"&gt;Japanese Holidays and Business Day API on RapidAPI&lt;/a&gt;&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>api</category>
      <category>javascript</category>
      <category>python</category>
    </item>
  </channel>
</rss>
