[英]how to get date of last two Fridays from today?
我需要使用今天的日期來獲取最近兩個星期五的日期。這是我當前使用的公共類GetDate {
public static void main(String[] args) {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
Date dt = new Date();
Calendar c = Calendar.getInstance();
c.setTime(dt);
System.out.println("today : " + sdf.format(dt));
while (c.get(Calendar.DAY_OF_WEEK) != 6) {
c.add(Calendar.DATE, -1);
}
Date lastFri=c.getTime();
System.out.println("last fri : "+sdf.format(lastFri));
c.add(Calendar.DATE, -7);
Date prevFri = c.getTime();
System.out.println("previous friday : "+sdf.format(prevFri));
}
}
有什么方法可以優化此代碼?
在Java 8,如果你沒有使用日歷API,你可以使用一個TemporalAdjuster
:
LocalDate today = LocalDate.now();
LocalDate prevFriday = today.with(previous(FRIDAY));
LocalDate prevPrevFriday = prevFriday.with(previous(FRIDAY));
注意:需要以下靜態導入
import static java.time.temporal.TemporalAdjusters.previous;
import static java.time.DayOfWeek.FRIDAY;
您可以這樣獲得最后一個星期五:
Calendar cal = Calendar.getInstance();
cal.add(Calendar.WEEK_OF_YEAR, -1);
cal.set(Calendar.DAY_OF_WEEK, Calendar.FRIDAY);
通過減去一個星期並將星期幾設置為星期五,可以得到最后一個星期五。
嘗試類似:
cal.add(Calendar.WEEK_OF_YEAR, -1);
cal.set(Calendar.DAY_OF_WEEK, Calendar.FRIDAY);
Date lastFriday = cal.getTime();
cal.add(Calendar.WEEK_OF_YEAR, -1);
cal.set(Calendar.DAY_OF_WEEK, Calendar.FRIDAY);
Date lastToLastFriday = cal.getTime();
此行應有幫助:
calendar.add(Calendar.DATE, Calendar.FRIDAY - 7 - c.get(Calendar.DAY_OF_WEEK));
因此,這段代碼正在解決您的問題:
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
Calendar c = GregorianCalendar.getInstance();
c.add(Calendar.DATE, Calendar.FRIDAY - 7 - c.get(Calendar.DAY_OF_WEEK));
System.out.println(sdf.formate(c.getTime()));
c.add(Calendar.DATE, Calendar.FRIDAY - 14 - c.get(Calendar.DAY_OF_WEEK));
System.out.println(sdf.formate(c.getTime()));
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.