Java 如何获得一周的日期(我知道周数)?

Java 如何获得一周的日期(我知道周数)?,java,Java,我知道一年中的周数,一周从星期天开始,然后是星期一、星期二、星期六 既然我知道周数,那么使用Java代码获取特定周日期的有效方法是什么???您可以使用该库 您没有提到您确切需要什么返回类型,但这段代码应该对您有用。sysout和formatter只是向您显示结果 Calendar cal = Calendar.getInstance(); cal.setTime(new Date()); cal.set(Calendar.WEEK_OF_YEAR, 30); SimpleDateFormat f

我知道一年中的周数,一周从星期天开始,然后是星期一、星期二、星期六

既然我知道周数,那么使用Java代码获取特定周日期的有效方法是什么???

您可以使用该库


您没有提到您确切需要什么返回类型,但这段代码应该对您有用。sysout和formatter只是向您显示结果

Calendar cal = Calendar.getInstance();
cal.setTime(new Date());
cal.set(Calendar.WEEK_OF_YEAR, 30);
SimpleDateFormat formatter = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");
cal.set(Calendar.DAY_OF_WEEK, Calendar.SUNDAY);
System.out.println(formatter.format(cal.getTime()));
cal.add(Calendar.DAY_OF_WEEK, 6);
System.out.println(formatter.format(cal.getTime()));

如果不需要外部库,只需使用日历即可

SimpleDateFormat sdf = new SimpleDateFormat("MM dd yyyy");
Calendar cal = Calendar.getInstance();
cal.set(Calendar.WEEK_OF_YEAR, 23);        
cal.set(Calendar.DAY_OF_WEEK, Calendar.MONDAY);
System.out.println(sdf.format(cal.getTime()));    
纯Java 8/Java.time解决方案 基于:


这个答案与其他答案几乎相同。但是,事情是这样的:

int year = 2018;
int week = 27;
int day = 1; //assuming week starts from sunday
Calendar calendar = Calendar.getInstance();
calendar.setWeekDate(year, week, day);
System.out.println(calendar.getTime());

你的意思是说,鉴于这是2010年的第22周,一周的第一天是什么时候(第一天是星期天),如果你在某个时候努力接受答案,你会吸引更多更好的答案……无论如何,你不需要cal.setTime(new date())部分。如果i-e'52'年的最后一周通过,这将不起作用。仅供参考,该项目现在正在进行,建议迁移到课程中。请参阅。如果您想在下一年的某个星期之前获取,您可以使用
LocalDate.ofYearDay(year,50)
而不是
LocalDate.now()
。DayOfYear(
50
在我的例子中)可以是随机的,但不能早于当年的第一天
DayOfWeek.MONDAY
。仅供参考,像、
java.text.SimpleDateFormat
这样非常麻烦的日期时间类现在被java 8和更高版本中内置的类所取代。看见
final long calendarWeek = 34;
LocalDate desiredDate = LocalDate.now()
            .with(IsoFields.WEEK_OF_WEEK_BASED_YEAR, calendarWeek)
            .with(TemporalAdjusters.previousOrSame(DayOfWeek.MONDAY));
int year = 2018;
int week = 27;
int day = 1; //assuming week starts from sunday
Calendar calendar = Calendar.getInstance();
calendar.setWeekDate(year, week, day);
System.out.println(calendar.getTime());