Java 获得接下来三周的最后一天
我想知道接下来三周的最后一天 例如,如果今天是4月16日星期三,我将在5月4日星期日得到结果 我写了一个这样的函数Java 获得接下来三周的最后一天,java,date,datetime,Java,Date,Datetime,我想知道接下来三周的最后一天 例如,如果今天是4月16日星期三,我将在5月4日星期日得到结果 我写了一个这样的函数 public static Date nexThreeWeekEnd() { Date now = new Date(); Date nextWeeks = DateUtils.truncate(DateUtils.addWeeks(now, 3), Calendar.DATE); Calendar calendar = Calendar.getInstan
public static Date nexThreeWeekEnd() {
Date now = new Date();
Date nextWeeks = DateUtils.truncate(DateUtils.addWeeks(now, 3), Calendar.DATE);
Calendar calendar = Calendar.getInstance();
calendar.setTime(nextWeeks);
calendar.set(Calendar.DATE, calendar.getActualMaximum(Calendar.DAY_OF_WEEK));
return calendar.getTime();
}
使用此库中的DateUtils:
org.apache.commons.lang.time.DateUtils;
但是这个函数将返回5月7日星期三,这意味着它将返回当前日期的确切日期
没有必要重写我的函数。任何其他解决我的问题的方法都将非常有用。
谢谢 使用下面的代码,希望对您有所帮助
Calendar cal = Calendar.getInstance();
int currentDay = cal.get(Calendar.DAY_OF_WEEK);
int leftDays= Calendar.SUNDAY - currentDay;
cal.add(Calendar.DATE, leftDays)
试一下:
Calendar c = Calendar.getInstance();
c.set(Calendar.DAY_OF_WEEK, Calendar.SUNDAY);
c.add(Calendar.WEEK_OF_YEAR, 2);
DateFormat df = new SimpleDateFormat("yyyy/MM/dd");
System.out.println(df.format(c.getTime()));
输出:
2014/05/04
您可以这样做:
Calendar calendar = Calendar.getInstance().getFirstDayOfWeek();
calendar.add(Calendar.WEEK_OF_YEAR, 4);
calendar.add(Calendar.DAY_OF_MONTH, -1);
在Java中,我们可以使用公历 请检查下面的代码是否对您有帮助
Date d = new Date();
GregorianCalendar cal1 = new GregorianCalendar();
cal1.setTime(d);
System.out.println(cal1.getTime());
int day = cal1.get(Calendar.DAY_OF_WEEK );
cal1.add(Calendar.DAY_OF_YEAR,-(day-1));/*go to start of the week*/
cal1.add(Calendar.WEEK_OF_YEAR,3); // add 3 weeks
day = cal1.get(Calendar.DAY_OF_MONTH );// get the end Day of the 3rd week
System.out.println("end of the 3rd week ="+day);
这个问题和其他答案使用了过时的课程 java.time 该框架内置于Java8及更高版本中。这些类取代了旧的麻烦的日期时间类,如
java.util.date
&.Calendar
。看见大部分java.time功能都在中向后移植到Java6和Java7,并在中进一步适应Android
该类表示只包含日期的值,不包含一天中的时间和时区。可以使用生成相对于原始值的新LocalDate
值。(注意复数)类实现了几个方便的调整器,包括我们需要的一个。这门课是一个方便的枚举表,代表一周中七天的每一天,周一周日
LocalDate start = LocalDate.of ( 2014 , Month.APRIL , 16 );
LocalDate nextOrSameSunday = start.with ( TemporalAdjusters.nextOrSame ( DayOfWeek.SUNDAY ) );
LocalDate twoWeeksAfterNextOrSameSunday = nextOrSameSunday.plusWeeks ( 2 );
转储到控制台
System.out.println ( "start: " + start + " | nextOrSameSunday: " + nextOrSameSunday + " | twoWeeksAfterNextOrSameSunday: " + twoWeeksAfterNextOrSameSunday );
开始时间:2014-04-16下一个星期日:2014-04-20下一个星期日后两周:2014-05-04
我已经编辑了我的问题并添加了库,谢谢:在您给出的示例中,您指定了两到三个星期,它是从星期天返回三个星期还是从两个星期返回?问题是矛盾的。你的第一句话说三周后,但你的第二句话2014-05-04的例子只说两周后。