从给定日期查找星期日的第一个匹配项

问题描述:

我想查找给定日期之前某个星期日的第一个匹配项的发生日期。从给定日期查找星期日的第一个匹配项

例如我有一个方法,除了当前日期,并可以说日期是今天的日期星期二02-09-2014,该方法将返回过去星期日31-08-2014的日期。

有什么办法可以让我在Java中完成它?

在此先感谢

+1

http://joda-time.sourceforge.net/apidocs/org/joda/time/DateTime.html#dayOfWeek() – StackFlowed 2014-09-02 20:58:48

+0

这得到了upvote?这个问题究竟如何“_shows research effort_”? – csmckelvey 2014-09-02 21:13:04

与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); 

而你得到了它。