Bagaimana cara menghitung hari dalam seminggu setiap tahun

Langkah 1

Persiapkan informasi. Untuk melaksanakan algoritme, perlu menetapkan satu hari, satu bulan dan satu tahun. Ini daftar bulan dari tiga hingga 14, dimulai dengan bulan Maret dan berakhir pada bulan Februari. Ini menjamin bahwa hari kabisat selalu jatuh pada akhir tahun, yang menyederhanakan perhitungan: jika bulan <3, bulan = bulan + 12.

Langkah 2

Hitung abad dan tahun. 1950-an harus 19, meskipun fakta bahwa angka ini mengakui abad ke-20: abad = dasar (tahun / 100) = yearSiglo = tahun mod 100.

Langkah 3

Temukan hari minggu ketika abad dimulai: Hari kerja = basis (abad / 4) + 5 * abad. Zeller menetapkan bahwa perhitungan ini, dari modul tujuh, akan memberikan hari pada minggu di mana setiap abad dimulai. Perhitungan dasar mempertimbangkan fakta bahwa setiap empat abad tidak ada hari kabisat.

Langkah 4

Hitung hari dalam seminggu di mana tahun dimulai: daySweden = weekDay + yearSiglover + base (yearSiglo / 4). Dengan pengecualian tahun kabisat, setiap tahun Anda harus memulai hari berikutnya dari minggu yang dimulai tahun sebelumnya. Penghitungan, dari modul tujuh, memberikan hari pada minggu dari hari pertama tahun itu.

Langkah 5

Temukan hari minggu ketika bulan dimulai: weekDay = weekDay + base ((bulan + 1) * 26) / 10). Ini adalah inti dari algoritma Zeller yang mengamati bahwa perhitungan ini dapat menentukan pada hari apa dalam satu minggu setiap bulan akan dimulai. Dengan rumus ini, kebutuhan untuk mencari tabel untuk menentukan panjang setiap bulan dihilangkan.

Langkah 6

Tambahkan hari dalam bulan dan hitung hari dalam seminggu saat tanggal jatuh: weekDay = weekDay + daySunday = weekDay mod 7.

Langkah 7

Ubah tanggal menjadi standar Organisasi Internasional untuk Standarisasi: tanggal dalam minggu itu; hari dalam seminggu dimulai dengan Senin = 1. Dengan algoritma Zeller, Sabtu digunakan = 0. Untuk konversi, aritmatika modular sederhana digunakan: weekDay = ((weekDay + 5) mod 7) + 1.