In this HackerRank Java Date and Time problem in a java programming language, You are given a date. You just need to write the method, getDay, which returns the day on that date.

## HackerRank Java Date and Time problem solution.

```import java.io.*;
import java.math.*;
import java.security.*;
import java.text.*;
import java.util.*;
import java.util.concurrent.*;
import java.util.regex.*;

class Result {

/*
* Complete the 'findDay' function below.
*
* The function is expected to return a STRING.
* The function accepts following parameters:
*  1. INTEGER month
*  2. INTEGER day
*  3. INTEGER year
*/

public static String findDay(int month, int day, int year) {

Calendar cal = Calendar.getInstance();
cal.set(Calendar.MONTH,month-1);
cal.set(Calendar.DAY_OF_MONTH,day);
cal.set(Calendar.YEAR,year);
String dayOfWeek = cal.getDisplayName(Calendar.DAY_OF_WEEK, Calendar.LONG, Locale.US).toUpperCase();
return dayOfWeek;

}

}

public class Solution {
public static void main(String[] args) throws IOException {
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bufferedWriter = new BufferedWriter(new FileWriter(System.getenv("OUTPUT_PATH")));

String[] firstMultipleInput = bufferedReader.readLine().replaceAll("\\s+\$", "").split(" ");

int month = Integer.parseInt(firstMultipleInput[0]);

int day = Integer.parseInt(firstMultipleInput[1]);

int year = Integer.parseInt(firstMultipleInput[2]);

String res = Result.findDay(month, day, year);

bufferedWriter.write(res);
bufferedWriter.newLine();

bufferedReader.close();
bufferedWriter.close();
}
}

```

## Second solution in java8 programming.

```import java.io.*;
import java.util.*;
import java.text.*;
import java.math.*;
import java.util.regex.*;

public class Solution {

public static void main(String[] args) {
try (Scanner scanner = new Scanner(System.in)) {
int month = scanner.nextInt();
int day = scanner.nextInt();
int year = scanner.nextInt();

Calendar calendar = Calendar.getInstance();
calendar.set(Calendar.DATE, day);
calendar.set(Calendar.MONTH, month - 1);
calendar.set(Calendar.YEAR, year);

System.out.println(calendar.getDisplayName(Calendar.DAY_OF_WEEK,
Calendar.LONG, new Locale("en", "US")).toUpperCase());
}
}
}```

### Third solution

```import java.util.Arrays;
import java.util.Calendar;
import java.util.List;
import java.util.Scanner;

public class JavaDateAndTime {
static List<String> days = Arrays.asList("SUNDAY", "MONDAY", "TUESDAY", "WEDNESDAY", "THURSDAY", "FRIDAY", "SATURDAY");

public static String getDay(String day, String month, String year) {

int y = Integer.parseInt(year);
int m = Integer.parseInt(month);
int d = Integer.parseInt(day);

Calendar c = Calendar.getInstance();
c.set(y, m-1, d);

int p = c.get(Calendar.DAY_OF_WEEK);
String s = days.get(p-1);
return s;
}

public static void main(String[] args) {
Scanner in = new Scanner(System.in);
String month = in.next();
String day = in.next();
String year = in.next();

System.out.println(getDay(day, month, year));

}
}```