Маялся со старой программой, стал разбираться и вот что вышло
Procedure isLeapYear(Year)
If (Year%4=0 And Year%100) Or Year%400=0
ProcedureReturn #True
Else
ProcedureReturn #False
EndIf
EndProcedure
;25 июля 2016 года: (25 + 0 + 5) % 7 = 30 % 7 = 2 — понедельник;
;8 августа 2017 года: (8 + 3 + 6) % 7 = 17 % 7 = 3 — вторник;
dday=8
dmon=8
dyear=2017
;день недели = (день + код месяца + код года) % 7
; Код месяца нужно просто запомнить.
; 1 — январь, октябрь;
; 2 — май;
; 3 — август;
; 4 — февраль, март, ноябрь;
; 5 — июнь;
; 6 — декабрь, сентябрь;
; 0 — апрель, июль.
Select dmon
Case 1,10:km=1
Case 5:km=2
Case 8:km=3
Case 2,3,11:km=4
Case 6:km=5
Case 12,9:km=6
Case 4,7:km=0
Default:
Debug "no month"
End
EndSelect
If Not isLeapYear(dyear)
If m=1 Or m=12
km-1
EndIf
EndIf
;код года = (6 + последние две цифры года + последние две цифры года / 4) % 7
kg=(6+Val(Mid(Str(dyear),3,2))+Val(Mid(Str(dyear),3,2))/4)%7
;Debug Val(Mid(Str(dyear),3,2))
;0 — суббота, 1 — воскресенье
dw=(dday+km+kg)%7
Select dw
Case 0:d$="суббота"
Case 1:d$="воскресенье"
Case 2:d$="понедельник"
Case 3:d$="вторник"
Case 4:d$="среда"
Case 5:d$="четверг"
Case 6:d$="пятница"
EndSelect
Debug d$
If (Year%4=0 And Year%100) Or Year%400=0
ProcedureReturn #True
Else
ProcedureReturn #False
EndIf
EndProcedure
;25 июля 2016 года: (25 + 0 + 5) % 7 = 30 % 7 = 2 — понедельник;
;8 августа 2017 года: (8 + 3 + 6) % 7 = 17 % 7 = 3 — вторник;
dday=8
dmon=8
dyear=2017
;день недели = (день + код месяца + код года) % 7
; Код месяца нужно просто запомнить.
; 1 — январь, октябрь;
; 2 — май;
; 3 — август;
; 4 — февраль, март, ноябрь;
; 5 — июнь;
; 6 — декабрь, сентябрь;
; 0 — апрель, июль.
Select dmon
Case 1,10:km=1
Case 5:km=2
Case 8:km=3
Case 2,3,11:km=4
Case 6:km=5
Case 12,9:km=6
Case 4,7:km=0
Default:
Debug "no month"
End
EndSelect
If Not isLeapYear(dyear)
If m=1 Or m=12
km-1
EndIf
EndIf
;код года = (6 + последние две цифры года + последние две цифры года / 4) % 7
kg=(6+Val(Mid(Str(dyear),3,2))+Val(Mid(Str(dyear),3,2))/4)%7
;Debug Val(Mid(Str(dyear),3,2))
;0 — суббота, 1 — воскресенье
dw=(dday+km+kg)%7
Select dw
Case 0:d$="суббота"
Case 1:d$="воскресенье"
Case 2:d$="понедельник"
Case 3:d$="вторник"
Case 4:d$="среда"
Case 5:d$="четверг"
Case 6:d$="пятница"
EndSelect
Debug d$
Комментарии
Отправить комментарий