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));
}
}
8 Comments
Hello Yash bro...!
ReplyDeleteI 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.
Deletethnks
Deletethnks buddy
DeleteHello Yash, why Calendar.LONG and Locale.US are taken? please explain me
ReplyDeleteAnyone pleae tell me why they have put Calendar.LONG and Locale.US in the program?
ReplyDeleteCalendar.LONG is used to output January instead of jan and Locale.US helps us to specify the time ig
DeleteThis is an excellent post - thank you for sharing it! I always relish the opportunity to read such superb content filled with valuable information. The ideas presented here are truly best and exceptionally captivating, making the post thoroughly enjoyable. Please continue with your fantastic work.
ReplyDeleteUnveiling the Power of Java Streams API