บทนำ
อัลกอริทึมของ Zeller ใช้หาวันในสัปดาห์ (Weekday) จากวันที่กำหนด สูตรสำหรับหาวันด้วย Zeller's Algorithm มีดังนี้:

สูตรนี้มีตัวแปรต่างๆ ดังนี้:
- d - วันของวันที่
- m: รหัสเดือน (Month Code) จาก มีนาคมถึงธันวาคม คือ 3 ถึง 12, มกราคมคือ 13, กุมภาพันธ์คือ 14 เมื่อพิจารณาเดือนมกราคมหรือ กุมภาพันธ์ ปีที่กำหนดจะลดลง 1
- y - สองหลักสุดท้ายของปี
- c - สองหลักแรกของปี
- w - วันในสัปดาห์ เมื่อเป็น 0 คือ วันเสาร์, เมื่อเป็น 6 คือ วันศุกร์
อินพุตและเอาต์พุต
Input: วัน, เดือน และ ปี: 4, 1, 1997 Output: วันนั้นคือ: Saturday
อัลกอริทึม
zellersAlgorithm(day, month, year)
Input: วันที่ของวัน
Output: วันนั้นเป็นวันอะไร (Sunday ถึง Saturday)
Begin
if month > 2, then
mon := month
else
mon := 12 + month
ลด year ลง 1
y := สองหลักสุดท้ายของปี
c := สองหลักแรกของปี
w := day + floor((13*(mon+1))/5) + y + floor(y/4) + floor(c/4) + 5*c
w := w mod 7
return weekday[w] // weekday จะเก็บวันจาก Saturday ถึง Friday
End
ตัวอย่างโค้ด (C++)
#include <iostream>
#include <cmath>
using namespace std;
string weekday[7] = {"Saturday","Sunday","Monday","Tuesday","Wednesday","Thursday","Friday"};
string zellersAlgorithm(int day, int month, int year) {
int mon;
if (month > 2)
mon = month; // มีนาคมถึงธันวาคม รหัสเดือนเท่ากับเดือน
else {
mon = (12 + month); // มกราคมและกุมภาพันธ์ รหัสเดือนคือ 13 และ 14
year--; // ลดปีสำหรับเดือนมกราคมและกุมภาพันธ์
}
int y = year % 100; // สองหลักสุดท้าย
int c = year / 100; // สองหลักแรก
int w = (day + floor((13*(mon+1))/5) + y + floor(y/4) + floor(c/4) + (5*c));
w = w % 7;
return weekday[w];
}
int main() {
int day, month, year;
cout << "Enter Day: "; cin >> day;
cout << "Enter Month: "; cin >> month;
cout << "Enter Year: "; cin >> year;
cout << "It was: " << zellersAlgorithm(day, month, year);
}
ผลลัพธ์
Enter Day: 04 Enter Month: 01 Enter Year: 1997 It was: Saturday