1

Say you have a Date object with day, month and year values.

I want to know which date it is.

By this I mean, like 5th of March is for example the 65th of the year. Or like 15th of January is the 15th.

Please no joda time. ( Not used in the current project. )

Koray Tugay
  • 22,894
  • 45
  • 188
  • 319

3 Answers3

9

You can use the Calendar which java provides. Using the get() method and DAY_OF_YEAR you can get what you want.

Ex:-

Calendar cal = new GregorianCalendar();
cal.setTime(new Date()); // Give your own date
System.out.println(cal.get(Calendar.DAY_OF_YEAR));
Rahul
  • 44,383
  • 11
  • 84
  • 103
3
Calendar#get(Calendar.DAY_OF_YEAR);
isnot2bad
  • 24,105
  • 2
  • 29
  • 50
3

tl;dr

LocalDate.now( ZoneId.of( "America/Montreal" ) )  // Today's date in a particular time zone.
         .getDayOfYear()                          // Returns day-of-year (1-366).

Details

The other Answers with Calendar class are outdated. The troublesome old date-time classes such as java.util.Date, java.util.Calendar, and java.text.SimpleTextFormat are now legacy, supplanted by the java.time classes.

Using java.time

The LocalDate class represents a date-only value without time-of-day and without time zone.

A time zone is crucial in determining a date. For any given moment, the date varies around the globe by zone. For example, a few minutes after midnight in Paris France is a new day while still “yesterday” in Montréal Québec.

Specify a proper time zone name in the format of continent/region, such as America/Montreal, Africa/Casablanca, or Pacific/Auckland. Never use the 3-4 letter abbreviation such as EST or IST as they are not true time zones, not standardized, and not even unique(!).

ZoneId z = ZoneId.of( "America/Montreal" );
LocalDate today = LocalDate.now( z );

2017-01-23

We can ask what day-of-year that is, 1-366.

int dayOfYear = today.getDayOfYear() ;

23

We can adjust that LocalDate into a specific day-of-year.

LocalDate ld = today.withDayOfYear( 187 ) ;

2017-07-06

See this code run live at IdeOne.com.


About java.time

The java.time framework is built into Java 8 and later. These classes supplant the troublesome old legacy date-time classes such as java.util.Date, Calendar, & SimpleDateFormat.

The Joda-Time project, now in maintenance mode, advises migration to the java.time classes.

To learn more, see the Oracle Tutorial. And search Stack Overflow for many examples and explanations. Specification is JSR 310.

Where to obtain the java.time classes?

The ThreeTen-Extra project extends java.time with additional classes. This project is a proving ground for possible future additions to java.time. You may find some useful classes here such as Interval, YearWeek, YearQuarter, and more.

Basil Bourque
  • 303,325
  • 100
  • 852
  • 1,154