สมมุติว่าเรามีวันที่ (วัน เดือน ปี) จากวันที่นี้ เราต้องหาวันในสัปดาห์ของวันที่นั้น เพื่อแก้ปัญหานี้ เราจะใช้อัลกอริธึมของเซลเลอร์ สูตรหาวันธรรมดาโดยใช้อัลกอริธึมของ Zeller อยู่ที่นี่แล้ว
𝑤=$$\lgroup d+\lfloor \frac{13(m+1)}{5} \rfloor+y+\lfloor\frac{y}{4} \rfloor+\lfloor\frac{c}{4} \rfloor +5c \rกลุ่ม mod 7$$
สูตรประกอบด้วยตัวแปรบางตัว พวกมันคือ −
ง − วันของวันที่
ม - เป็นรหัสเดือน สำหรับเดือนมีนาคมถึงธันวาคมคือ 3 ถึง 12 สำหรับเดือนมกราคมคือ 13 และสำหรับเดือนกุมภาพันธ์คือ 14 เมื่อเราพิจารณามกราคมหรือกุมภาพันธ์ ปีที่กำหนดจะลดลง 1
ย - เลขสองหลักสุดท้ายของปี
ค - เลขสองหลักแรกของปี
ว - วันธรรมดา เมื่อเป็น 0 คือวันเสาร์ เมื่อเป็น 6 หมายถึงวันศุกร์
ตัวอย่างเช่น หากเราต้องการได้วันทำงานของวันที่ 4 มกราคม 1997 ผลลัพธ์จะเป็น "วันเสาร์"
อัลกอริทึมมีดังนี้ −
อัลกอริทึม
zellersAlgorithm(วัน เดือน ปี)
ป้อนข้อมูล − วันที่ของวัน
ผลผลิต − วันไหน (วันอาทิตย์ถึงวันเสาร์)
Begin if month > 2, then mon := month else mon := 12 + month decrease year by 1 y := last two digit of the year c := first two digit of the year w := day + floor((13*(mon+1))/5) + y + floor(y/4) + floor(c/4) + 5*c w := w mod 7 return weekday[w] //weekday will hold days from Saturday to Friday End
ตัวอย่าง (C++)
#include #include 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; //for march to december month code is same as month else{ mon = (12+month); //for Jan and Feb, month code will be 13 and 14 year--; //decrease year for month Jan and Feb } int y = year % 100; //last two digit int c = year / 100; //first two digit 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); }
อินพุต
(4, 1, 1997)
ผลลัพธ์
Enter Day: 4 Enter Month: 1 Enter Year: 1997 It was: Saturday