Android 每年11月的上周五打电话
我有一个代码,可以手动调用2020年当月的最后一个星期五。代码必须识别并拨打每年11月的最后一个星期五,有人能帮忙吗,谢谢Android 每年11月的上周五打电话,android,calendar,integer,Android,Calendar,Integer,我有一个代码,可以手动调用2020年当月的最后一个星期五。代码必须识别并拨打每年11月的最后一个星期五,有人能帮忙吗,谢谢 Calendar lastday = Calendar.getInstance(); int month = lastday.get(Calendar.MONTH); int dayOfMonth = lastday.get(Calendar.DAY_OF_MONTH); if(month == Calendar.NOVEMBER &
Calendar lastday = Calendar.getInstance();
int month = lastday.get(Calendar.MONTH);
int dayOfMonth = lastday.get(Calendar.DAY_OF_MONTH);
if(month == Calendar.NOVEMBER && dayOfMonth == 27){
.....
}
你的回答是:
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){
.....
}
您可以使用以下解决方案。通过更改
calendar.set(calendar.MONTH,calendar.seven)
,它应该可以用于任何月份:
public int getLastFridayOfNomber(){
日历=Calendar.getInstance();
calendar.set(calendar.MONTH,calendar.11th);
int totalDaysInMonth=calendar.getActualMaximum(calendar.DAY\u OF\u MONTH);
calendar.set(calendar.DAY\u OF_MONTH,totalDaysInMonth);
int daysToRollBack=(calendar.get(calendar.DAY/u/u-WEEK)+1)%7;
返回totalDaysInMonth-daysToRollBack;
}
用法很简单:
。。。
int lastdayofnomber=GetLastFridayofnomber();
如果您使用Kotlin,它也可以是扩展功能:
fun Calendar.getLastFridayOfMonth():Int{
val totalDaysInMonth=getActualMaximum(日历。每月的第天)
此[日历.日期\月的\日]=月的总计日期
val daysToRollBack=(此[日历.周中的第天]+1)%7
返回totalDaysInMonth-daysToRollBack
}
用法:
val calendar=calendar.getInstance()
//固定月份
calendar.set(calendar.MONTH,calendar.11th);
//获取给定月份的最后一个星期五
val lastfridayofnomber=calendar.getLastFridayOfMonth()
java.time通过去糖化或ThreeTenABP
总是考虑使用Java.Times,即现代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日星期四)跑步时的输出:
是十一月的最后一个星期五吗?假的
表达式today.with(TemporalAdjusters.lastInMonth(DayOfWeek.FRIDAY))
计算当前月份的最后一个星期五。如果今天
等于计算的日期,我们是在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 API级别26吗?
time在较旧和较新的Android设备上都能很好地工作。它至少需要Java6
- 在Java8和更高版本以及更新的Android设备上(API级别26),现代API是内置的
- 在非androidjava6和7中,获取三个后端口,即现代类的后端口(三个十用于jsr310;请参见底部的链接)
- 在较旧的Android上,可以使用desugaring或Android版本的ThreeTen Backport。它叫ThreeTenABP。在后一种情况下,请确保使用子包从
导入日期和时间类org.threeten.bp
- 解释如何使用java.time
- ,其中首先描述了
java.time
- ,java.time的后端口到Java6和Java7(JSR-310为三十)
- ,Android版Three Ten Backport
- ,解释得非常透彻
@Ali Najafi
好极了,我很高兴你的逻辑@Natig Babayev
感谢您的解决方案。