Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- bool calc_leapyear(int y) {
- // wenn das Jahr ohne Rest durch 4 teilbar ist -> Schaltjahr
- if(!(y % 4)) {
- // wenn es aber auch ohne Rest durch 100 teilbar ist -> kein Schaltjahr
- if(!(y % 100)) {
- // ist es aber nun auch durch 400 ohne Rest teilbar -> Schaltjahr
- if(!(y % 400)) {
- return true;
- }
- else {
- return false;
- }
- }
- else {
- return true;
- }
- }
- else {
- return false;
- }
- }
- //---------------------------------------------------------------------
- unsigned char get_max_days(unsigned char m, int y, bool w_ly) {
- if(m == 1 || m == 3 || m == 5 || m == 7 || m == 8 || m == 10 || m == 12) {
- return 31;
- }
- else if(m == 4 || m == 6 || m == 9 || m == 11) {
- return 30;
- }
- else if(m == 2) {
- if(calc_leapyear(y) && w_ly) {
- return 29;
- }
- else {
- return 28;
- }
- }
- else {
- return 0;
- }
- }
- //---------------------------------------------------------------------
- unsigned char calc_day_of_week(unsigned char d, unsigned char m, int y) { //Nur für Jahre > 999 && Jahre < 10000 !
- int day_digit, month_digit = 0, year_digit, century_digit;
- day_digit = d % 7;
- if(m != 1) {
- for(unsigned char i = 1; i < m; i++) {
- month_digit = (month_digit + (get_max_days(i, y, 0) % 7)) % 7;
- }
- }
- year_digit = ((y % 100) + ((y % 100) / 4)) % 7;
- century_digit = (3 - ((y / 100) % 4)) * 2;
- if(calc_leapyear(y) && (m == 1 || m == 2)) {
- day_digit--;
- }
- return (day_digit + month_digit + year_digit + century_digit) % 7;
- }
Advertisement
Add Comment
Please, Sign In to add comment