MATLAB公曆日期求干支紀日的干支

2021-10-10 14:43:18 字數 1938 閱讀 3413

請不要抱太大期望,我只是一時興起搞的。

設定參考點,2023年6月23日是甲子,然後求出日期差,對60取餘,得到在干支表中的位置。

再分別對10、12取餘,得到具體的干支序數。

其中,求兩個日期的差用儒略曆,比較方便。

實測貌似公元2023年之前的就算不准了。是否和儒略曆本身有關不知道。

function ***agenarycycle

ref=

cal2jd([

1911,6

,23,12

,0,0

]);y=

1911;m=

1;d=1

;format long g

target=

cal2jd

([y,m,d,12,

0,0]

);t=target-ref;

d=mod

(t,60);

%+1 because i am not a good c programmer

dtg=

mod(d,10)

+1;ddz=

mod(d,12)

+1;[dtg,ddz]

endfunction jd=

cal2jd

(cal)

% cal:1x6矩陣,6列分別為年月日時分秒。構造cal時可以省略末尾的0

% 公元2023年10月4日24

:00點之前使用儒略曆,公元2023年10月15日00

:00點之後使用公曆

iflength

(cal)

<

6cal(6

)=0;

endyear=

cal(1)

;month=

cal(2)

;day=

cal(3)

+(cal(4)

*3600

+cal(5

)*60+

cal(6)

)/86400

;y = year +

4800;%

4801 b.c. is a century year and also a leap year.

if( year <0)

y =y+1;

% please note that there is no year 0 a.d.

endm=month;

if( m <=2)

% january and february come after december.

m = m+

12;

y = y -1;

ende=

floor

(30.6

*(m+1)

);a=floor

(y/100);

% number of centuries

% 教皇格雷戈里十三世於2023年2月24日以教皇訓令頒布,將2023年10月5日至14抹掉。2023年10月4日過完後第二天是10月15日

if( year <

1582)|

(year==

1582

&month<10)

|(year==

1582

& month==

10&day<15)

b =-38

;else

b =floor

((a/4)

- a)

;% number of century years that are not leap years

endc=

floor

(365.25

* y)

;% julian calendar years and leap years

jd= b + c + e + day -

32167.5

;end

輸入日期求星期的程式

week.c version 1.0 2006 9 14 auther jsp w d 2 m 3 m 1 5 y y 4 y 100 y 400 mod 7 在公式中d表示日期中的日數,m表示月份數,y表示年數。注意 在公式中有個與其他公式不同的地方 把一月和二月看成是上一年的十三月和十四月,例 ...

對日期求模,拷貝檔案

複製的時候可能包含每行後面的空格.注意去掉後面的空格 echo off for f tokens 2 delims a in wmic os get localdatetime value do set ct a rem 獲取月日 set ym ct 4,4 rem 獲取月 set check ct...

隨機日期求離本年的天數

隨機日期求離本年的天數 day input 請輸入年月日 格式舉例 2000 01 05 year int day 4 將年份擷取 month int day 5 7 擷取月份 sun int day 8 10 擷取日 print year,month,sun t run 31 29,31 30,3...