可能是這樣的:如何在Java中找到前兩個星期一的日期?
for(int i=0;i<15;i++){
Calendar cal = new GregorianCalendar();
cal.add(Calendar.DAY_OF_MONTH, -1);
if (cal.Calendar.DAY_OF_WEEK==1){
System.out.println(cal.cal.getTime())
但是可能存在更簡單的方法? 謝謝。
可能是這樣的:如何在Java中找到前兩個星期一的日期?
for(int i=0;i<15;i++){
Calendar cal = new GregorianCalendar();
cal.add(Calendar.DAY_OF_MONTH, -1);
if (cal.Calendar.DAY_OF_WEEK==1){
System.out.println(cal.cal.getTime())
但是可能存在更簡單的方法? 謝謝。
您正處在正確的軌道上。
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);
即使簡單的是直接設置平日:
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);
使用TemporalAdjuster。
LocalDate today = LocalDate.now();
LocalDate previousOrSameMonday = today.with(TemporalAdjusters.previousOrSame(DayOfWeek.MONDAY));
並減去一週得到第二個。
LocalDate secondMondayBefore = previousOrSameMonday.minusWeeks(1);
這不需要給星期一作爲結果嗎? –
正確。錯過了。固定。 – CamelSlack