我想查找給定日期之前某個星期日的第一個匹配項的發生日期。從給定日期查找星期日的第一個匹配項
例如我有一個方法,除了當前日期,並可以說日期是今天的日期星期二02-09-2014,該方法將返回過去星期日31-08-2014的日期。
有什麼辦法可以讓我在Java中完成它?
在此先感謝
我想查找給定日期之前某個星期日的第一個匹配項的發生日期。從給定日期查找星期日的第一個匹配項
例如我有一個方法,除了當前日期,並可以說日期是今天的日期星期二02-09-2014,該方法將返回過去星期日31-08-2014的日期。
有什麼辦法可以讓我在Java中完成它?
在此先感謝
與Java 8,你可以使用內置的TemporalAdjusters之一:
LocalDate today = LocalDate.now();
LocalDate previousSunday = today.with(previous(SUNDAY));
//or if today is a Sunday and you want to return today:
LocalDate previousSunday = today.with(previousOrSame(SUNDAY));
注:假定靜態導入:
import static java.time.DayOfWeek.SUNDAY;
import static java.time.temporal.TemporalAdjusters.previous;
試試這個:
Calendar cal = Calendar.getInstance();
cal.add(Calendar.DAY_OF_WEEK, -(cal.get(Calendar.DAY_OF_WEEK) - 1));
System.out.println(cal.getTime());
這樣的事情會有效。
Calendar cal = Calendar.getInstance();
int diff = cal.get(Calendar.DAY_OF_WEEK) - Calendar.SUNDAY;
cal.add(Calendar.DAY_OF_MONTH, -diff);
System.out.println(cal.getTime());
週日和現在使用java.util.Calendar
的。減去差(以天爲單位):
Calendar c = Calendar.getInstance();
int day = c.get(Calendar.DAY_OF_WEEK);
c.add(Calendar.DAY_OF_WEEK, Calendar.SUNDAY - day);
而你得到了它。
http://joda-time.sourceforge.net/apidocs/org/joda/time/DateTime.html#dayOfWeek() – StackFlowed 2014-09-02 20:58:48
這得到了upvote?這個問題究竟如何「_shows research effort_」? – csmckelvey 2014-09-02 21:13:04