主題: 星期的公式
查看單個文章
舊 2005-12-12, 02:22 PM   #2 (permalink)
mini
管理版主
 
mini 的頭像
榮譽勳章
UID - 4144
在線等級: 級別:97 | 在線時長:9935小時 | 升級還需:61小時級別:97 | 在線時長:9935小時 | 升級還需:61小時級別:97 | 在線時長:9935小時 | 升級還需:61小時級別:97 | 在線時長:9935小時 | 升級還需:61小時級別:97 | 在線時長:9935小時 | 升級還需:61小時級別:97 | 在線時長:9935小時 | 升級還需:61小時級別:97 | 在線時長:9935小時 | 升級還需:61小時
註冊日期: 2002-12-07
文章: 13382
精華: 0
現金: 26616 金幣
資產: 3024526 金幣
預設

每一種語言都有自己的保留字函式可用
比如 VB 是 Weekday
===================
Weekday 函數範例
本範例使用 Weekday 函數來傳回某一日期為星期幾。

Dim MyDate, MyWeekDay
MyDate = #February 12, 1969# ' 指定一日期。
MyWeekDay = Weekday(MyDate) ' MyWeekDay 的值為 4,因為 MyDate 是星期四。
===================

其實要自己設計也很簡單的
以公元0001年為起點
每四年有一個潤年
所以 (公元XXXX年 / 4) 看能否整除
能的話 當年的2月即為29天
否則 當年的2月即為28天
那其他月份是固定的
大月(31天) 1 3 5 7 8 10 12
小月(30天) 4 6 9 11

0001年 01月 01日 是 星期一
所以VB裡
MsgBox Weekday("0001 01 01")
會出現 "2" (代表星期一)

回過頭來
1983年3月20號是星期幾?
1983 mod 4 = 3 不是潤年(2月只有28天)
所以 1月+2月=31+28 再 +20 = 第79
0001~1983 總共 365*(1983-1)= 723430
再加每4年多一天= (1983-1)/4 捨棄小數點 = 495

1983年3月20號= 723430+495+79= 公元第724004天
724004 mod 7 = 1,所以是 星期日
(如果 mod 7 = 0,表示是星期六)

換算表
##########
星期日 = 1
星期一 = 2
星期二 = 3
星期三 = 4
星期四 = 5
星期五 = 6
星期六 = 0
##########

驗證

2000年 12月 12日 (星期2)
729635+
499+
(186+120+29)=335+
12=730481

2005年 12月 01日 (星期4)
731460+
501+
(186+120+28)=334+
1=732296

1995年 07月 12日 (星期3)
727810+
498+
(93+60+28)=181+
12=728501
mini 目前線上  
送花文章: 2027, 收花文章: 8021 篇, 收花: 26846 次
回覆時引用此帖