請不要抱太大期望,我只是一時興起搞的。
設定參考點,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...