我有一个代码,可以手动调用2020年的该月的最后一个星期五。该代码必须识别并调用每年11月的最后一个星期五,任何人都可以帮忙,谢谢。 / p>
Calendar lastday = Calendar.getInstance();
int month = lastday.get(Calendar.MONTH);
int dayOfMonth = lastday.get(Calendar.DAY_OF_MONTH);
if(month == Calendar.NOVEMBER && dayOfMonth == 27){
.....
}
答案 0 :(得分:1)
您的答案:
Calendar lastday = Calendar.getInstance();
int month = lastday.get(Calendar.MONTH);
int dayOfMonth = lastday.get(Calendar.DAY_OF_MONTH);
int day = lastday.get(Calendar.DAY_OF_WEEK);
if(month == Calendar.NOVEMBER && dayOfMonth >= 24 && day == Calendar.FRIDAY){
.....
}
答案 1 :(得分:0)
您可以使用以下解决方案。通过更改calendar.set(Calendar.MONTH, Calendar.NOVEMBER)
,它应该可以在任何月份使用:
public int getLastFridayOfNovember() {
Calendar calendar = Calendar.getInstance();
calendar.set(Calendar.MONTH, Calendar.NOVEMBER);
int totalDaysInMonth = calendar.getActualMaximum(Calendar.DAY_OF_MONTH);
calendar.set(Calendar.DAY_OF_MONTH, totalDaysInMonth);
int daysToRollBack = (calendar.get(Calendar.DAY_OF_WEEK) + 1) % 7;
return totalDaysInMonth - daysToRollBack;
}
用法很简单:
...
int lastDayOfNovember = getLastFridayOfNovember();
如果您使用Kotlin,它也可以作为扩展功能:
fun Calendar.getLastFridayOfMonth(): Int {
val totalDaysInMonth = getActualMaximum(Calendar.DAY_OF_MONTH)
this[Calendar.DAY_OF_MONTH] = totalDaysInMonth
val daysToRollBack = (this[Calendar.DAY_OF_WEEK] + 1) % 7
return totalDaysInMonth - daysToRollBack
}
用法:
val calendar = Calendar.getInstance()
// set month
calendar.set(Calendar.MONTH, Calendar.NOVEMBER);
// get last Friday of given month
val lastFridayOfNovember = calendar.getLastFridayOfMonth()
答案 2 :(得分:0)
始终考虑将Java.time(现代Java日期和时间API)用于日期工作。对于像您这里这样更复杂的查询,更是如此。
LocalDate today = LocalDate.now(ZoneId.systemDefault());
boolean isLastFridayOfNovember = today.getMonth().equals(Month.NOVEMBER)
&& today.equals(today.with(TemporalAdjusters.lastInMonth(DayOfWeek.FRIDAY)));
System.out.println("Is it the last Friday in November? " + isLastFridayOfNovember);
我今天(11月12日星期四)跑步时的输出:
是11月的最后一个星期五吗?错误
表达式today.with(TemporalAdjusters.lastInMonth(DayOfWeek.FRIDAY))
计算当前月份的最后一个星期五。如果today
等于计算的日期,并且我们在11月,则我们在11月的最后一个星期五。
要计算给定年份11月的最后一个星期五:
int year = 2021;
LocalDate lastFridayInNovember = LocalDate.of(year, Month.NOVEMBER, 30)
.with(TemporalAdjusters.previousOrSame(DayOfWeek.FRIDAY));
System.out.println(lastFridayInNovember);
2021-11-26
java.time在较新和较旧的Android设备上均可正常运行。它只需要至少 Java 6 。
org.threeten.bp
导入日期和时间类。java.time
。java.time
向Java 6和7(JSR-310的ThreeTen)的反向端口。