How can I convert year and week to a Java Date object?

How can I convert year and week to a Java Date object? I use JodaTime, but the standard Java classes that use the solution are fine too.

+5
source share
5 answers

Solution using standard Java classes. It just gets the current time and sets the year and week fields of the year to known values.

Calendar cld = Calendar.getInstance();
cld.set(Calendar.YEAR, year);
cld.set(Calendar.WEEK_OF_YEAR, week);
Date result = cld.getTime();
+7
source

I did not use Joda-Time (although I heard it), but I think about the combination of DateTimeconstructor and convenient should do the trick. For instance:. plusWeeks

DateTime dt = new DateTime(theYear, 1, 1, 0, 0, 0, 0).plusWeeks(theWeeks);

... Joda-Time -, 1 .

+1

java.util.Date(int,int,int,int,int,int), new Date(2011,2,12,10,13,13);
java.util.Calendar set(int,int) (, c.set(Calendar.DAY_OF_MONTH,22);, 22). Calendar.getTime(), java.util.Date. , , UTC ( ).

+1

org.joda.time.DateTime . plusWeeks , . , .

DateTime startOfTheWeek = new DateTime().withYear(2016).withWeekOfWeekyear(52)
.withDayOfWeek(1).withTimeAtStartOfDay();
DateTime endOfTheWeek = startOfTheWeek.withDayOfWeek(7).withTime(23,59,59,999);
System.out.println("Start date: " + startOfTheWeek.toDate());
System.out.println("End date: " + endOfTheWeek.toDate());

- :

Start date: Mon Dec 26 00:00:00 EET 2016
End date: Sun Jan 01 23:59:59 EET 2017
0

TL;DR

YearWeek.of( 2016 , 1 )
        .atDay( DayOfWeek.MONDAY )

2016-01-04

-

, , . , .

java.time

- java.time, .

WeekFields .

Locale

. JVMs Locale.

int year = 2016;
int week = 1;
int dayOfWeek = 1;  // 1-7, locale-dependent such as Sunday-Monday in US.
WeekFields weekFields = WeekFields.of ( Locale.CANADA_FRENCH );
LocalDate ld = LocalDate.now ( )
        .withYear ( year )
        .with ( weekFields.weekOfYear ( ), week )
        .with ( weekFields.dayOfWeek ( ), 1 );

System.out.println ( "ld: " + ld );

, (2016 ) ​​ (2015 ).

2015-12-27

ISO 8601

ISO 8601 . № 1 , . 52 53 .

, , WeekFields ISO, WeekFields.ISO, 2016-01-04, 2015-12-27.

int year = 2016;
int week = 1;
int dayOfWeek = 1;  // 1-7, locale-dependent such as Sunday-Monday in US.
WeekFields weekFields = WeekFields.ISO;
LocalDate ld = LocalDate.now ( )
        .withYear ( year )
        .with ( weekFields.weekOfYear ( ), week )
        .with ( weekFields.dayOfWeek ( ), 1 );

System.out.println ( "ld: " + ld );

2016-01-04

YearWeek

, ThreeTen-Extra. YearWeek ISO 8601 .

.

YearWeek yw = YearWeek.of( 2016 , 1 ); // Passing a week-based-year number, *NOT* a calendar year.

toString ISO 8601 yyyy-Www, 2016-W01.

, , Javas DayOfWeek enum.

LocalDate ld = yw.atDay( DayOfWeek.MONDAY );

, 52 53 .

int weeksInWeekBasedYear = yw.lengthOfYear();

java.time

java.time Java 8 . legacy , java.util.Date, Calendar SimpleDateFormat.

Joda-Time, , java.time.

, . Oracle. Qaru . JSR 310.

java.time?

ThreeTen-Extra java.time . java.time. , Interval, YearWeek, YearQuarter, .

0
source

All Articles