如何解决如何在Android中获得一个月的日子
我有客户UI日历,但有一个问题:
例如,9月从01/09 / 2020-> 30/09/2020开始30天,但UI日历显示从29/08 / 2020-> 02/10/2020
这是我的代码。谁可以帮助我?
val calendar: Calendar = Calendar.getInstance()
calendar.firstDayOfWeek = Calendar.MONDAY
calendar.add(Calendar.MONTH,position)
// Set day of month as 1
calendar.set(Calendar.DAY_OF_MONTH,1)
// Get a number of the first day of the week
val dayOfWeek = calendar.get(Calendar.DAY_OF_WEEK)
// Count when month is beginning
val firstDayOfWeek = calendar.firstDayOfWeek
val monthBeginningCell = (if (dayOfWeek < firstDayOfWeek) 7 else 0) + dayOfWeek - firstDayOfWeek
// Subtract a number of beginning days,it will let to load a part of a previous month
calendar.add(Calendar.DAY_OF_MONTH,-monthBeginningCell)
/* Get all days of one page (35 is a number of all possible cells in one page
(a part of previous month,current month and a part of next month))
*/
while (days.size < 35) {
days.add(calendar.time)
calendar.add(Calendar.DAY_OF_MONTH,1)
}
解决方法
您到底需要什么?如果您需要一个月的全部日历,则可以使用以下代码作为示例:
class Scratch {
public static void main(String[] args) {
Calendar calendar = Calendar.getInstance();
// The month you want to set
int month = Calendar.SEPTEMBER;
calendar.set(Calendar.MONTH,month);
int firstDayOfMonth = calendar.getActualMinimum(Calendar.DAY_OF_MONTH);
int lastDayOfMonth = calendar.getActualMaximum(Calendar.DAY_OF_MONTH);
System.out.println(getTimeOfWeek(lastDayOfMonth,false,month));
System.out.println(getTimeOfWeek(firstDayOfMonth,true,month));
}
private static Instant getTimeOfWeek(int day,boolean isFirst,int month) {
Calendar calendar = Calendar.getInstance();
calendar.set(Calendar.MONTH,month);
calendar.set(Calendar.DAY_OF_MONTH,day);
int dayInWeek = calendar.get(Calendar.DAY_OF_WEEK);
if (isFirst) {
calendar.set(Calendar.DAY_OF_MONTH,day - dayInWeek + 1);
} else {
calendar.set(Calendar.DAY_OF_MONTH,day + 7 - dayInWeek);
}
return calendar.toInstant();
}
}
如果您只想要该月的范围,只需将日历设置为该月的第一天和最后一天。 希望它能起作用!
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。