▶ 実 行
▶ 実行
クリア
西暦と修正ユリウス日とを相互変換する関数
by 雪乃☆雫
グレゴリオ暦開始を(「1582/10/15」の修正ユリウス日取得G)に定める。 #1582/10/15以降はグレゴリオ暦、それ以前はユリウス暦として修正ユリウス日を取得する。 ※1582/10/5~1582/10/14が指定された場合は、ユリウス暦の計算式使う。(グレゴリオ歴で1582/10/15~1582/10/24と同じになる) ※BCの場合は年にマイナスを付ける(「-1/1/1」など)。ADもBCも0年は存在しない(AD1年の前年はBC1年)ので注意。 ●(日付を|日付の|日付で)修正ユリウス日取得 日付を「/」で区切る。y=それ[0]。 もし、y=0ならば、空で戻る。 グレゴリオ暦=いいえ。 もし、グレゴリオ暦開始≦(日付の修正ユリウス日取得G)ならば、グレゴリオ暦=はい。 もし、グレゴリオ暦=はいならば、 日付の修正ユリウス日取得Gで戻る。 違えば、もし、グレゴリオ暦=いいえならば、 日付の修正ユリウス日取得Jで戻る。 違えば、 空で戻る。 ここまで。 ここまで。 #西暦を全てグレゴリオ暦として修正ユリウス日を取得する。 ●(日付を|日付の|日付で)修正ユリウス日取得G 日付を「/」で区切る。 y=それ[0]。m=それ[1]。d=それ[2]。 もし、y=0ならば、空で戻る。 もし、y<0ならば、y=y+1。 もし、m≦2ならば、 y=y-1。m=m+12。 ここまで。 (FLOOR(365.25*y))+FLOOR(y/400)-FLOOR(y/100)+FLOOR(30.59*(m-2))+d-678912で戻る。 ここまで。 #西暦を全てユリウス暦として修正ユリウス日を取得する。 ●(日付を|日付の|日付で)修正ユリウス日取得J 日付を「/」で区切る。 y=それ[0]。m=それ[1]。d=それ[2]。 もし、y=0ならば、空で戻る。 もし、y<0ならば、y=y+1。 もし、m≦2ならば、 y=y-1。m=m+12。 ここまで。 (FLOOR(365.25*y))+FLOOR(30.59*(m-2))+d-678914で戻る。 ここまで。 #修正ユリウス日→グレゴリオ暦 ●(MJDから)グレゴリオ暦取得 n=MJD+678881。 a=4*n+3+4*FLOOR(3/4*FLOOR((4*(n+1)/146097+1)))。 b=5*FLOOR((aと1461の剰余)/4)+2。 y=FLOOR(a/1461)。m=FLOOR(b/153)+3。d=FLOOR((bと153の剰余)/5)+1。 もし、m>12ならば、 y=y+1。m=m-12。 ここまで。 もし、y≦0ならば、y=y-1。 「{y}/{m}/{d}」で戻る。 ここまで。 #修正ユリウス日→ユリウス暦 ●(MJDから)ユリウス暦取得 n=MJD+678883。 a=4*n+3。 b=5*FLOOR((aと1461の剰余)/4)+2。 y=FLOOR(a/1461)。m=FLOOR(b/153)+3。d=FLOOR((bと153の剰余)/5)+1。 もし、m>12ならば、 y=y+1。m=m-12。 ここまで。 もし、y≦0ならば、y=y-1。 「{y}/{m}/{d}」で戻る。 ここまで。 #修正ユリウス日→西暦 ※1582/10/15以降はグレゴリオ暦、それ以前はユリウス暦として修正ユリウス日を西暦に変換する。 ●(MJDを|MJDの)MJD西暦変換 もし、MJD≧グレゴリオ暦開始ならば、 MJDからグレゴリオ暦取得で戻る。 違えば、 MJDからユリウス暦取得で戻る。 ここまで。 ここまで。 //モジュロ? //https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Operators/Remainder ●(AとBの)剰余 ((A%B)+B)%Bで戻る。 ここまで。