http://FMPro.info  FileMaker Pro 関連総合ポータルサイト

HolidayJ 関数

カテゴリー : 日付
計算結果のデータタイプ : テキスト
対応FileMakerバージョン : 対応 7  対応 8  対応 8.5  対応 9  対応 10  対応 11  対応 12  対応 13  対応 14  対応 15
作者 : 社本修司 株式会社ジェネコム

概要

指定する日付が日本の祝日の場合、その祝日名を返します。

構文

HolidayJ ( 日付 )

引数

引数名タイプ備考
日付日付 2020.7.24

別のウィンドウで、引数の値を変更してテストすることが出来ます

HolidayJ ( "2020.07.24" )

結果

スポーツの日

/*==============================================================

  カスタム関数    HolidayJ ( 日付 ) 

  指定された日付が祝日の場合、祝日名を得ます。(2018年12月14日現在)

  対象範囲
  国民の祝日に関する法律(祝日法)の施行された1948(昭和23)年7月20日以降
  (振替休日は1973(昭和48)年4月12日制定・施行)
  春分・秋分の簡易計算の出来る範囲(1851〜2150)
  春分・秋分の日の計算は「新こよみの便利帳 」(恒星社厚生閣刊) による
  祝日としての春分・秋分の日は閣議で決定され前年の2月の官報に公示される。

  国民の祝日に関する法律の一部を改正する法律(平成30年法律第57号)平成30年6月20日に公布
    国民の祝日に関する法律(昭和23年法律第178号)の特例
    平成32年(2020年)に限り、「海の日」は7月23日に、「体育の日(スポーツの日)は7月24日に、「山の日」は8月10日に移動

  天皇の即位の日及び即位礼正殿の儀の行われる日を休日とする法律(平成30年法律第99号)平成30年12月14日に公布同日施行
    天皇の即位の日の平成31年(2019年)5月1日及び即位礼正殿の儀が行われる日の平成31年(2019年)10月22日は、休日となります。
    また、これらの休日は国民の祝日扱いとなるため、平成31年(2019年)4月30日と5月2日も休日となります

  このカスタム関数を引用するに当たっては、必ずコメントも一緒に引用してください。
=============================================================*/


Let ( 

    [  // === Let_Start ==================================

    %theDate = 日付 ; 
    %year = Year ( %theDate ) ;             // %theDate の年

    // 春分
    %shunbun = 
        Case (
            %year ≤ 1899 and %year ≥ 1851 ; 
                Date ( 3 ; Int ( 19.8277 + .242194 * ( %year - 1980 ) - Int ( ( %year - 1983 ) / 4 ) ) ; %year ) ; 
            %year ≤ 1979; 
                Date ( 3 ; Int ( 20.8357 + .242194 * ( %year - 1980 ) - Int ( ( %year - 1983 ) / 4 ) ) ; %year ) ; 
            %year ≤ 2099; 
                Date ( 3 ; Int ( 20.8431 + .242194 * ( %year - 1980 ) - Int ( ( %year - 1980 ) / 4 ) ) ; %year ) ; 
            %year ≤ 2150; 
                Date ( 3 ; Int ( 21.851 + .242194 * ( %year - 1980 ) - Int ( ( %year - 1980 ) / 4 ) ) ; %year )
        ) ; 
    // 秋分
    %shuubun = 
        Case (
            %year ≤ 1899 and %year ≥ 1851 ; 
                Date ( 9; Int ( 22.2588 +.242194 * ( %year - 1980 ) - Int ( ( %year -1983 ) / 4 ) ) ; %year ) ; 
            %year ≤ 1979; 
                Date ( 9; Int ( 23.2588 +.242194 * ( %year - 1980 ) - Int ( ( %year - 1983 ) / 4 ) ) ; %year ) ; 
            %year ≤ 2099; 
                Date ( 9; Int ( 23.2488 +.242194 * ( %year - 1980 ) - Int ( ( %year - 1980 ) / 4 ) ) ; %year ) ; 
            %year ≤ 2150; 
                Date ( 9; Int ( 24.2488 +.242194 * ( %year - 1980 ) - Int ( ( %year - 1980 ) / 4 ) ) ; %year )
        ) ; 

// === HOLIDAYLIST START ==============================

    %holidayList = 

    // 祝日名<改行> 日付 <改行>の形式のリスト
    // システム書式にとらわれないようにするために、( 日付 * 1 ) で 日付 を数値化


    Case (
        %year ≥ 1948 and %year ≤ 2150 ; 

        List (
    // 元旦(1月1日)1948.07.20制定
    // New Year's Day (Gantan)

            "元旦" ; 
            Case ( %year ≥ 1949 ; Date ( 1 ; 1 ; %year ) ) * 1 ; 

    // 成人の日(1月15日)1948.07.20制定
    // 成人の日(1月第2月曜)1998.10.21制定 2000.01.01施行
    // Coming of Age Day (Seijin-no-hi)

            "成人の日" ; 
            Case (
                %year ≥ 2000; 
                    Date ( 1 ; 15 - DayOfWeek ( Date ( 1 ; 6 ; %year ) ) ; %year ) ; 
                %year ≥ 1949; 
                    Date ( 1 ; 15 ; %year ) 
            ) * 1 ;

    // 建国記念の日(2月11日)1966.6.25制定
    // National Foundation Day (Kenkoku-kinen-no-hi)

            "建国記念の日" ; 
            Case ( %year ≥ 1967 ; Date ( 2 ; 11 ; %year ) ) * 1 ; 

    // 春分の日(春分日)1948.07.20制定
    // Vernal Equinox (Shunbun-no-hi)

            "春分の日" ;
            %shunbun * 1 ; 

    // みどりの日(4月29日)1989.02.17制定
    // Greenery Day (Midori-no-hi)

            "みどりの日" ; 
            Case ( %year ≥ 1989 and %year ≤ 2006 ; Date ( 4 ; 29 ; %year ) ) * 1 ; 

    // 昭和の日(4月29日)2005.05.20制定 2007.01.01施行
    // Showa's Day (Showa-no-hi)

            "昭和の日" ; 
            Case ( %year ≥ 2007 ; Date ( 4 ; 29 ; %year ) ) * 1 ; 

    // 憲法記念日(5月3日)1948.07.20制定
    // Constitution Memorial Day (Kenpou-kinen-bi)

            "憲法記念日" ;  
            Case ( %year ≥ 1949 ; Date ( 5 ; 3 ; %year ) ) * 1 ; 

    // 国民の休日 1985.12.27制定
    // Holiday for a Nation (Kokumin-no-kyujitsu)

    // 国民の祝日に関する法律 第3条3項(1985.12.27施行)
    // その前日及び翌日が「国民の祝日」である日
    // (日曜日にあたる日及び前項に規定する休日にあたる日を除く。)
    // は、休日とする。
    // 「国民の休日」は通称名
    // ※振り替え休日が優先されるので国民の休日が月曜日になることはない。

            "国民の休日" ; 
            Case (
                %year ≥ 1986 and %year ≤ 2006 and DayOfWeek ( Date ( 5 ; 4 ; %year ) ) ≥ 3 ; 
                    Date ( 5 ; 4 ; %year )
            ) * 1 ; 

    // みどりの日(5月4日)2005.05.20制定 2007.01.01施行
    // Greenery Day (Midori-no-hi)

            "みどりの日" ; 
            Case ( %year ≥ 2007; Date ( 5; 4; %year ) ) * 1 ; 

    // こどもの日(5月5日)1948.07.20制定
    // Children's Day (Kodomo-no-hi)

            "こどもの日" ; 
            Case ( %year ≥ 1949 ; Date ( 5 ; 5 ; %year ) ) * 1 ; 

    // 海の日(7月20日)1995.03.08制定 1996.01.01施行
    // 海の日(7月第3月曜日)2001.06.22制定 2003.01.01施行
    // Marine Day (Umi-no-hi)

            "海の日" ; 
            Case (
                %year = 2020 ; 
                    Date ( 7 ; 23 ; %year ) ; 
                %year ≥ 2003 ; 
                    Date ( 7 ; 22 - DayOfWeek ( Date ( 7 ; 6 ; %year ) ) ; %year ) ; 
                %year ≥ 1996 ; 
                    Date ( 7 ; 20 ; %year )
            ) * 1 ; 

    // 山の日(8月11日)2014.05.23制定
    // Mountain Day (Yama-no-hi)

            "山の日" ; 
            Case ( 
                %year = 2020 ; 
                    Date ( 8 ; 10 ; %year ) ; 
                %year ≥ 2016 ; 
                    Date ( 8 ; 11 ; %year )
            ) * 1 ; 

    // 敬老の日(9月15日)1966.06.25制定
    // 敬老の日(9月第3月曜日)2001.06.22制定 2003.01.01施行
    // Respect for the Aged Day (Keirou-no-hi)

            "敬老の日" ; 
            Case (
                %year ≥ 2003 ; 
                    Date ( 9 ; 22 - DayOfWeek ( Date ( 9 ; 6 ; %year ) ) ; %year ) ; 
                %year ≥ 1966 ; 
                    Date ( 9 ; 15 ; %year ) 
            ) * 1 ; 

    // 国民の休日
    // Holiday for a Nation (Kokumin-no-kyujitsu)
    // 敬老の日が第3月曜日に改正されたことにより派生
    // 秋分の日が水曜日になる年
    // 2009,2015,2026,2032,2037,2043,2049,2054,2060,2071,2077,
    // 2088,2094,2099,2105,2111,2116,2122,2133,2139,2150...

            "国民の休日" ; 
            Case ( 
                %year ≥ 2003 and 
                %shuubun -2 = Date ( 9 ; 22 - DayOfWeek ( Date ( 9 ; 6 ; %year ) ) ; %year ) ; 
                    %shuubun -1 
            ) * 1 ; 

    // 秋分の日(秋分日)1948.07.20制定
    // Autumnal Equinox (Shuubun-no-hi)

            "秋分の日" ; 
            %shuubun * 1 ; 

    // 体育の日(10月10日)1966.06.25制定
    // 体育の日(10月第2月曜日)1998.10.21制定 2000.01.01施行
    // スポーツの日:2018.06.20制定 2020.01.01施行
    // Health and Sports Day (Taiku-no-hi)

            "体育の日" ; 
            Case (
                %year ≥ 2000 and %year < 2020 ; 
                    Date ( 10 ; 15 - DayOfWeek ( Date ( 10 ; 6 ; %year ) ) ; %year ) ; 
                %year ≥ 1966 and %year < 2020 ; 
                    Date ( 10 ; 10 ; %year ) 
            ) * 1 ; 

            "スポーツの日" ; 
            Case (
                %year = 2020 ; 
                    Date ( 7 ; 24 ; %year ) ; 
                %year > 2020 ; 
                    Date ( 10 ; 15 - DayOfWeek ( Date ( 10 ; 6 ; %year ) ) ; %year ) ; 
            ) * 1 ; 

    // 文化の日(11月3日)1948.07.20制定
    // National Culture Day (Bunka-no-hi)

            "文化の日" ; 
            Case ( %year ≥ 1948 ; Date ( 11 ; 3 ; %year ) ) * 1 ; 

    // 勤労感謝の日(11月23日)1948.07.20制定
    // Labor Thanksgiving Day (Kinrou-kansha-no-hi)

            "勤労感謝の日" ; 
            Case ( %year ≥ 1948 ; Date ( 11 ; 23 ; %year ) ) * 1 ; 

    // 天皇誕生日(4月29日)1948.07.20制定
    // 天皇誕生日(12月23日)1989.02.17制定
    // 天皇誕生日(2月23日)2019.04.30施行
    // Emperor's Birthday (Tennou-tanjyou-bi)

            "天皇誕生日" ; 
            Case ( 
                %year ≥ 2020 ; 
                    Date ( 2 ; 23 ; %year ) ; 
                // 皇室典範特例法の施行の日(平成31年4月30日)の翌日より12月23日から2月23日に(2019年には天皇誕生日は存在しない)
                %year ≥ 1989 and %year < 2019 ; 
                    Date ( 12 ; 23 ; %year ) ; 
                %year ≥ 1949 and %year ≤ 1988 ; 
                    Date ( 4 ; 29 ; %year )
            ) * 1 ; 

    // 皇太子明仁親王の結婚の儀(昭和34年4月10日)
    // The Rite of Wedding of His Imperial Highness Crown Prince Akihito
    // (Koutaishi-AKIHITO-shinno-no-kekkonn-no-gi)

            "皇太子明仁親王の結婚の儀" ; 
            Case ( %year = 1959 ; Date ( 4 ; 10 ; %year ) ) * 1 ; 

    // 昭和天皇の大喪の礼(平成元年2月24日)
    // The Funeral Ceremony of Emperor Showa
    // (SHOWA-tennou-no-taisou-no-rei)

            "昭和天皇の大喪の礼" ; 
            Case ( %year = 1989 ; Date ( 2 ; 24 ; %year ) ) * 1 ; 

    // 即位礼正殿の儀(平成2年11月12日)
    // 即位礼正殿の儀(2019年10月22日)
    // The Ceremony of the Enthronement of His Majesty the Emperor (at the Seiden)
    // (Sokuirei-seiden-no-gi)

            "即位礼正殿の儀" ; 
            Case ( 
                %year = 1990 ; 
                    Date ( 11 ; 12 ; %year ) ; 
                %year = 2019 ; 
                    Date ( 10 ; 22 ; %year ) ; 
            ) * 1 ; 

    // 皇太子徳仁親王の結婚の儀(平成5年6月9日)
    // The Rite of Wedding of His Imperial Highness Crown Prince Naruhito
    // (Koutaishi-NARUHITO-shinno-no-kekkonn-no-gi)

            "皇太子徳仁親王の結婚の儀" ; 
            Case ( %year = 1993 ; Date ( 6 ; 9 ; %year ) ) * 1 ; 

    // 新天皇即位(2019年5月1日)
            "天皇の即位の日" ; 
            Case ( %year = 2019 ; Date ( 5 ; 1 ; %year ) ) * 1 ; 
            "国民の休日" ; 
            Case ( %year = 2019 ; Date ( 4 ; 30 ; %year ) ) * 1 ; 
            "国民の休日" ; 
            Case ( %year = 2019 ; Date ( 5 ; 2 ; %year ) ) * 1 ; 
        )
    ) ; 
// === HOLIDAYLIST END ================================

    // %holidayList 内の %theDate の位置
    %theDatePosition = Position ( %holidayList ; ( %theDate * 1 ) ; 1 ; 1 ) ; 

    // %theDate に対する祝日名の書かれた行が %holidayList の何行目か
    %line = PatternCount ( Left ( %holidayList ; %theDatePosition ) ; ¶ ) 

    ] ;  // === Let_End ==================================

    // 祝日名( %holidayList の %line( %theDate の一つ前)の行 )

    Case ( 
        not IsEmpty ( %theDate ) ; 
            Case (
                // %theDate が %holidayList に含まれる場合
                PatternCount ( %holidayList ; ( %theDate * 1 ) ) ; 
                    Substitute ( MiddleValues ( %holidayList ; %line ; 1 ) ; ¶ ; "" ) ; 

                // 2005.05.20 の法改正で
                // 「国民の祝日」が日曜日に当たるときは、その日後においてその日に最も近い「国民の祝日」でない日を休日とする。
                // と振替休日の定義が変更になっている
                // 5月3日、5月4日が日曜日の場合は5月6日は振替休日

                %theDate ≥ Date ( 1 ; 1 ; 2007 ) and 
                %theDate = Date ( 5 ; 6 ; %year ) and 
                (
                    DayOfWeek ( Date ( 5 ; 3 ; %year ) ) = 1 or 
                    DayOfWeek ( Date ( 5 ; 4 ; %year ) ) = 1
                ) ; 
                    "振替休日" ; 

                // 振り替え休日(1973(昭和48)年4月12日施行)
                // Substitute Holiday


                // %theDate が月曜日でかつ %theDate の前日が %holidayList に含まれる場合
                %theDate ≥ Date ( 4 ; 12 ; 1973 ) and 
                DayOfWeek ( %theDate ) = 2 and 
                PatternCount ( %holidayList ; ( %theDate * 1 ) - 1 ) ; 
                    "振替休日" 
        ) 
    ) 


/*============================================================*/
// ©2004-2018,SHAMOTO Syuji <http://www.FMPro.jp>


エンコードは Unicode (UTF-8)、改行タイプは LF (Unix) 形式のテキストとして保存します。
テキストエディタで正常に開かない場合は、エンコードを指定してファイルを開くようにしてください。

詳細説明

指定する日付が日本の祝日の場合、その祝日名を返します。(2018年6月20日現在)
対象範囲
国民の祝日に関する法律(祝日法)の施行された1948(昭和23)年7月20日以降
(振替休日は1973(昭和48)年4月12日制定・施行)
春分・秋分の簡易計算の出来る範囲(1851〜2150)

国民の祝日に関する法律の一部を改正する法律(平成30年法律第57号)平成30年6月20日に公布
国民の祝日に関する法律(昭和23年法律第178号)の特例
平成32年(2020年)に限り、「海の日」は7月23日に、「体育の日(スポーツの日)は7月24日に、「山の日」は8月10日に移動

天皇の即位の日及び即位礼正殿の儀の行われる日を休日とする法律(平成30年法律第99号)平成30年12月14日に公布同日施行
天皇の即位の日の平成31年(2019年)5月1日及び即位礼正殿の儀が行われる日の平成31年(2019年)10月22日は、休日となります。
また、これらの休日は国民の祝日扱いとなるため、平成31年(2019年)4月30日と5月2日も休日となります

この関数が使用する他のカスタム関数

この関数を使用する他のカスタム関数

注意:ここで紹介されているカスタム関数をご自分のシステムに組み込んだ場合に発生した問題についてはFMPro.infoは責任を負いません。

Copyright © 2004-2009 FMPro.info All Rights Reserved.