2011-10-31 99 views

回答

3

您正處在正確的軌道上。

Calendar cal = Calendar.getInstance(); 
cal.add(Calendar.DAY_OF_YEAR, -7); // First week before 
cal.add(Calendar.DAY_OF_YEAR, -7); // Second week before 

讓我做這個工作只是星期一。

Calendar cal = Calendar.getInstance(); 

int weekday = cal.get(Calendar.DAY_OF_WEEK); 
int days = (Calendar.SATURDAY - weekday + 2) % 7; 

cal.add(Calendar.DAY_OF_YEAR, days); 

cal.add(Calendar.DAY_OF_MONTH, -7); 
cal.add(Calendar.DAY_OF_MONTH, -7); 
+0

這不需要給星期一作爲結果嗎? –

+0

正確。錯過了。固定。 – CamelSlack

1

即使簡單的是直接設置平日:

Calendar cal = Calendar.getInstance(); 
cal.set(Calendar.DAY_OF_WEEK, Calendar.MONDAY); 
cal.add(Calendar.DATE, -7); 
System.out.println(cal.getTime()); 

請記住,這不會影響時間。如果你想要00:00,您需要設置相應的值:

cal.set(Calendar.HOUR_OF_DAY, 0); 
cal.set(Calendar.MINUTE, 0); 
cal.set(Calendar.SECOND, 0); 
cal.set(Calendar.MILLISECOND, 0); 
1

java.time

使用TemporalAdjuster。

LocalDate today = LocalDate.now(); 

LocalDate previousOrSameMonday = today.with(TemporalAdjusters.previousOrSame(DayOfWeek.MONDAY)); 

並減去一週得到第二個。

LocalDate secondMondayBefore = previousOrSameMonday.minusWeeks(1); 
相關問題