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));
}
}
Hello Yash bro…!
I had a doubt in First answer code
//here
cal.set(Calendar.MONTH,month-1);// at this line why u kept "-1" please tell me for it.
because in java january is start from 0.
thnks
thnks buddy
Hello Yash, why Calendar.LONG and Locale.US are taken? please explain me
Anyone pleae tell me why they have put Calendar.LONG and Locale.US in the program?
Calendar.LONG is used to output January instead of jan and Locale.US helps us to specify the time ig