▶ 実 行
▶ 実行
クリア
新暦・旧暦・節切の干支取得
by 雪乃☆雫
干支取得プラグイン=プラグイン名。 !「https://n3s.nadesi.com/plain/540.nako3」を取り込む。 !「https://n3s.nadesi.com/plain/562.nako3」を取り込む。 十干データ=["甲","乙","丙","丁","戊","己","庚","辛","壬","癸"]。 十二支データ=["子","丑","寅","卯","辰","巳","午","未","申","酉","戌","亥"]。 ##旧暦での暦月 //西暦の日付から、旧暦の年始・月初切り替えで、年の干支、月の干支、日の干支を配列で返す。 ※ 太陽暦採用以前の暦は旧暦なので年や月の変わり目が異なり、歴史的なナニカを扱う場合は干支も旧暦を元に取得しないと意味ない。 //西暦は、1582/10/04までユリウス暦。1582/10/15からグレゴリオ暦。 ●(日付を|日付で|日付の)旧暦干支取得 日付を「/」で区切る。年=それ[0]。西暦月=それ[1]。 日付から旧暦取得。それを「/」で区切る。月=それ[1]。 もし、(月の1だけ文字左部分)=「閏」ならば、月の1から1文字削除。#月の「閏」を省く。 もし、月-西暦月>9ならば、年=年-1。# 旧暦ではまだ年が変わっていない 日付から年と月で干支配列作成して戻る。 ここまで。 ##節切(節月) //立春・節気切り替えで、年の干支、月の干支、日の干支を配列で返す。占いとかはコレらしい。 //二十四節気取得の略算式が1900~2099年の対応なので、その範囲内だけ。 ●(日付を|日付で|日付の)節切干支取得 日付を「/」で区切る。西暦年=それ[0]。年=西暦年。 元日=西暦年の「立春」を二十四節気日付取得。 もし、(元日と日付の日数差)<0ならば、年=西暦年-1。 節月=日付の二十四節気No取得。 もし、節月%2=1ならば、節月=節月-1。 節月=節月/2。 もし、節月≦0ならば、節月=節月+12。 日付から年と節月で干支配列作成して戻る。 ここまで。 ##西暦での暦月。 //西暦の日付で、年の干支、月の干支、日の干支を配列で返す。 //西暦は、1582/10/04までユリウス暦。1582/10/15からグレゴリオ暦。 ●(日付を|日付で|日付の)干支取得 日付を「/」で区切る。年=それ[0]。月=それ[1]。 日付から年と月で干支配列作成して戻る。 ここまで。 #----------------------------------------------- ##[年干支,月干支,日干支]の配列にして返す ●(日付から年と月で)干支配列作成 干支=空配列。 年で年干支番号取得。 干支[0]=十干データ[それ[0]]&十二支データ[それ[1]]。# 年の干支 年と月で月干支番号取得。 干支[1]=十干データ[それ[0]]&十二支データ[それ[1]]。# 月の干支 日付の修正ユリウス日取得。 それで日干支番号取得。 干支[2]=十干データ[それ[0]]&十二支データ[それ[1]]。# 日の干支 干支で戻る。 ここまで。 #----------------------------------------------- ##干支番号取得 ●(西暦年で|西暦年の)年干支番号取得 十干No=(西暦年+6)と10の剰余。 十二支No=(西暦年+8)と12の剰余。 [十干No,十二支No]で戻る。 ここまで。 ●(西暦年と月で|月の)月干支番号取得 No=(月-1)+(西暦年-1600)*12。 十干No=(No+4)と10の剰余。 十二支No=(No+2)と12の剰余。 [十干No,十二支No]で戻る。 ここまで。 ●(修正ユリウス日で|修正ユリウス日の)日干支番号取得 十干No=修正ユリウス日と10の剰余。 十二支No=(修正ユリウス日+2)と12の剰余。 [十干No,十二支No]で戻る。 ここまで。 #----------------------------------------------- #以下はテスト もし、干支取得プラグイン=「メイン」ならば、 「干支取得テスト」のボタン作成して、干支取得ボタンに代入。 干支取得ボタンをクリックした時には、 表示用=空。 「【干支の取得】{改行}yyyy/mm/ddで西暦の日付を入力してください{改行}有効範囲:{旧暦表始め} ~ {旧暦表終わり}」と尋ねる。 日付はそれを英数半角変換して、「/」を「/」に置換。 日付を表示。 日付を『\d{3,4}/\d{1,2}/\d{1,2}』で正規表現マッチ。 もし、それがNULLでなければ、 日付の旧暦取得して表示。 日付の干支取得。「新暦:{それ}」を表示。 日付の旧暦干支取得。「旧暦:{それ}」を表示。 日付の節切干支取得。「節切:{それ}」を表示。 ここまで。 ここまで。 ここまで。