一些時間相關操作

2021-06-15 22:03:58 字數 1245 閱讀 8754

1. 求星期公式 

星期=[5+a(實際天數)] mod 7 

2. 干支計算公式 

六十甲子干支序號,從1-> 59-> 0。 

六十甲子干支序號=[23+a(實際天數)] mod 60 

3. 二十八宿計算公式 

二十八宿序號=[23+a(實際天數)] mod 28 

4. 實際天數a的計算 

a=b(基本天數)+c(閏日天數) 

b=(計算年-1)*365+(要計算到年的月日天數) 

例:2023年2月1日的基本天數b=(1984-1)*365+(31+1)=723827(天), 

其中,31是1月為31天,1為2月1日為1天。 

公元308年8月28日的基本天數 

b=(308-1)*365+(31+28+31+30+31+30+31+27)=112055+239=112294(天) 

這裡的(要計算到年的月日天數),用的是公曆,月日天數的規則我好 

象小學就學過了。哈哈…… 

c=(計算年-1) div 4 -誤差修正值 + fixvalue2 

fixvalue2為0或者1。常值為0,當年數為閏年(公曆閏年法)之中的3月 

1日之後的為1。 

誤差修正值推算: 

公元元年1月1日至2023年10月14日為0。 

2023年10月15日至2023年12月31日為10。 

從2023年1月1日起每增加乙個世紀累加1,但能被400除盡的世紀不累 

加1。此方法推算即可。 

--有乙個問題,2023年這一年的修正值應為多少呢?演算法中正好沒有 

講到,但看來應該是10。 

例2023年1月1日起誤差值為11,而2023年1月1日起誤差修正值為12, 

而2023年1月1日起誤差修正值為13, 

但2023年誤差修正值仍為13,因為2023年能被400整除,故不累加。而 

2023年1月1日起誤差修正值為14。 

5. 例項:1998.3.15的星期、干支與二十八宿 

b=(1998-1)*365+(31+28+15)=728979 

c=(1998-1) div 4 - 13 + 0 = 486 

a=b+c=728979+486=729465 

星期序號=(5+729465) mod 7=0,即為星期日 

干支序號=(13+729465) mod 60=58,即為辛酉 

二十八宿序號=(23+729465) mod 28=4,即為房 

堆相關的一些操作

include includeusing namespace std const int maxn 100 heap為堆,n為元素個數 int heap maxn n 10 對heap陣列在 low,high 範圍進行向下調整 其中low為欲調整結點的陣列下標,high一般為堆的最後乙個元素的陣列下...

linux 一些相關操作命令

1,檢視內網ip ifconfig eth0 注意是數字0 2,檢視外網ip curl ifconfig.me 3,壓縮操作 tar zcvf kl law articles new 3.sql.tgz kl law articles new 3.sql c usr local 解壓到某個資料夾 z...

String及相關的一些操作

字串是常量,一旦被建立就不能改變,字串的值是存放在常量池裡面,可以改引用達到讓兩個字串相同的目的。如果要修改字串的內容或長度,並不能直接修改,而是要返回乙個新的string物件,原來的string是不改的。你要是嫌字串多操作多麻煩,不想新建string那你可以考慮使用stringbuffer,兩者差...