幫我寫寫這條程式...計算任意一天是星期幾

2008-04-25 3:31 am
以下可供參考~


計算任意一天是星期幾

公式:
S = X-1 + [(X-1)/4] - [(X-1)/100] + [(X-1)/400] + C

解釋:X是公元的年數,C是從這一年的元旦算起到這天為止(連這一天在內)的日數, [(X-1)/4]、[(X-1)/100]、[(X-1)/400] 分別表示其整除部分。

求出S後,再用7除,取餘數,餘數為0是星期日,若不為0,餘數是幾,這一天就是星期幾。

判斷輸入的年份是否為閏年,由歷法可知,若該年年數不能被4整除,則該年為平年,即2月為28天;若能被4整除,但不能被100整除,則該年為閏年,即2月為29天;若能被100整除,看其是否能被400整除,若能被400整除,則為閏年,否則為平年。

讓變數變成陣列的函數”ARRAY”
Mon=ARRAY(31,28,31,30,31,……,31)
Mon(0)=31

核對特別的日子 (分別輸入年、月、日):
例一: 1949/10/1 (星期六)
例二: 1921/7/1 (星期五)
例三: 1984/1/1 (星期日)
例四: 2000/3/8 (星期三)
例五: 1986/6/1 (星期日)
更新1:

是visual basic的程式碼..

回答 (1)

2008-04-25 6:34 am
✔ 最佳答案
計算任意一天是星期幾
好似條公式錯左甘:
Dim S As Long
Dim X As Long
Dim C As Long
Dim DayArray() As String
Dim YuanDan As Date
DayArray = Split("日,一,二,三,四,五,六", ",")
X = DateTime.Year(Now)
YuanDan = DateTime.DateSerial(DateTime.Year(Now), 1, 1)
X = DateTime.DateDiff("d", YuanDan, Now) +1 '減去後加上今天
S = X - 1 + ((X - 1) / 4) - ((X - 1) / 100) +((X - 1) / 400)+C
MsgBox "今天是星期" & DayArray(S Mod 7) '貌似有些問題
MsgBox "但其實今天是星期" & DayArray (Weekday(Now)) '這個才是對的

閏年平年判斷:
Dim year As Long
year = InputBox("請輸入年份", "潤平年判斷")
If IsNumeric(year) = True And year < 2999 And year > 0 Then
MsgBox year & "是" & IIf(year Mod 4 = 0, IIf(year Mod 100 = 0, IIf(year Mod 400 = 0, "閏年", "平年"), "閏年"), "平年")
End If

讓變數變成陣列的函數”ARRAY”唔知道要做咩:
Dim Mon()
Mon = Array(31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31)
Mon(0)=31

核對特別的日子 (分別輸入年、月、日):
Dim d As Date
Dim days() As String
days = Split("錯誤,日,一,二,三,四,五,六", ",")
On Error GoTo Error_
MyDate = InputBox("請輸入日期,格式是:dd/mm/yyyy", "核對日子")
d = Format(MyDate, "dd/mm/yyyy")
MsgBox MyDate & "是星期" & days(Weekday(d))
Exit Sub
Error_:
MsgBox Err.Description, vbCritical, "Error"


收錄日期: 2021-04-24 10:47:11
原文連結 [永久失效]:
https://hk.answers.yahoo.com/question/index?qid=20080424000051KK02094

檢視 Wayback Machine 備份