DEV Community

Cover image for Day Name Finder in Java
Dhanush
Dhanush

Posted on • Edited on

Day Name Finder in Java

The user provides us with three integer inputs: day, month, and year. Our goal is to use the given date to determine the day name, such as Monday, Tuesday, Wednesday, etc.

For example:
Input: 21 03 2024
Output: Thursday

Zeller's congruence Algorithm

Zeller's congruence Algorithm

January and February are considered as months 13 and 14 of the previous year in this method of calculation. For instance, the algorithm considers February 2, 2010, as the second day of month 14 i.e., (02/14/2009 in DD/MM/YYYY notation).

  • h is the day of the week (0 = Saturday, 1 = Sunday, 2 = Monday, ..., 6 = Friday)
  • q is the day of the month
  • m is the month (3 = March, 4 = April, 5 = May, ..., 14 = February)
  • K the year of the century
  • J is the zero-based century (For example, the zero-based centuries for 1995 and 2000 are 19 and 20 respectively)

Solution in Java:

import java.util.Scanner;

class DayNameFinder{
public static void main(String x[]){
Scanner scan = new Scanner(System.in);
DayNameFinder df = new DayNameFinder();
System.out.println("Enter the date (day, month, year) in numbers:");
    int day = scan.nextInt();
    int month = scan.nextInt();
    int year = scan.nextInt();
    System.out.println("The day name is: " + df.findDay(day, month, year));
}

public String findDay(int dayValue, int monthValue, int yearValue){
    if(monthValue == 1 || monthValue == 2){
        monthValue += 12;
        yearValue--;
    }
    int yearOfCentury = yearValue % 100;
    int century = yearValue / 100;
    int result = (dayValue + (13 * (monthValue + 1)/5 + yearOfCentury + yearOfCentury/4 + century/4 + 5*century)) % 7;
        String[] dayName = {"Saturday", "Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday"};
        return dayName[result];
    }
}
Enter fullscreen mode Exit fullscreen mode

In many date calculation algorithms, including the one used in this program, Saturday is often considered the first day of the week for computational purposes. This convention is based on international standards (ISO 8601) and cultural norms prevalent in many parts of the world.

It provides consistency across different applications and programming environments, making it easier for developers to implement date-related functionalities.

On successful compilation, if we run the program we will get the output as:

day name finder java

Thank you for reading.

                             😎
Enter fullscreen mode Exit fullscreen mode

Top comments (0)