Tarikh Chouhan
Tarikh Chouhan

Reputation: 435

Finding out what day the first of any given month is

So I need to make a basic calendar which displays the calendar for a specific year and month (the user should be able to select any month and any year based on text input).

So far, I have managed to create a calender obj, use Scanner to get the desired month and year from the user but my question is that how do I find out what the first day of the month is? In the example above, it's a Saturday. My logic to building it is that if I know the first day, I can make a String[][] array and start displaying the day on the relevant date by looping through the month from the first day. I've used a scanner to get the required month and year. I then created a calendar object and set the Calendar variables; Calendar.YEAR and Calendar.MONTH, as per required by the user:

Calendar cal= Calendar.getInstance();
cal.set(Calendar.YEAR, year); //my year variable is set 2015
cal.set(Calendar.MONTH, chosenMonth); //my chosenMonth is set to 5 since January starts from 0.

I tried using the following code to test out my calender to see if it will execute the code if Monday was the first day of the month. On june 2015, it was.

if(cal.get(Calendar.DAY_OF_WEEK) == Calendar.MONDAY){ System.out.println("This will print is my calendar secessfully gathers that monday was the first day of the month on June 2015.") }

It doesn't execute.

Upvotes: 1

Views: 1154

Answers (2)

rby
rby

Reputation: 786

Java SE 8 has a whole new API for date and time, java.time. See Tutorial.

You can use the class LocalDate to get the day of a given week. For example, using your day from above do,

LocalDate d = LocalDate.of(2011, 10, 1);

Then LocalDate::getDayOfWeek() method will return a DayOfWeek enum instance, such as SATURDAY.

DayOfWeek dayOfWeek = localDate.getDayOfWeek ();

That enum can render a localized string for your sentence output.

 String output = dayOfWeek.getDisplayName ( TextStyle.FULL , Locale.CANADA_FRENCH); // Or Locale.US or Locale.ENGLISH, and so on.

samedi

Upvotes: 1

sam
sam

Reputation: 2033

Try this:

cal.set(Calendar.DATE, 1);

java.text.SimpleDateFormat sdf = new java.text.SimpleDateFormat("EEEE");
System.out.println(sdf.format(cal.getTime()));

Output:

Saturday

Demo

Upvotes: 1

Related Questions