TimetableView icon indicating copy to clipboard operation
TimetableView copied to clipboard

澎湃OS,安卓14日期计算错误

Open yvyan opened this issue 1 year ago • 0 comments

首先十分感谢作者的控件!!!

之前使用一切正常,升级到了安卓14之后发现系统时间返回有了变化,控件内的判断存在边界错误,具体表现为:高亮日期是当前日期的后一天。

经过初步排查,问题出在OnDateBuildAapteronHighLight函数内。

//获取周几,1->7
        Calendar now = Calendar.getInstance();
        //一周第一天是否为星期天
        boolean isFirstSunday = (now.getFirstDayOfWeek() == Calendar.SUNDAY);
        int weekDay = now.get(Calendar.DAY_OF_WEEK);
        //若一周第一天为星期天,则-1
        if (isFirstSunday) {
            weekDay = weekDay - 1;
            if (weekDay == 0) {
                weekDay = 7;
            }
        }

代码中,安卓13及以前, Calendar.getInstance().getFirstDayOfWeek()返回为1,逻辑正常,但是安卓14会返回2,但是代码会按返回值为0进行处理,从而导致计算结果比预期值+1。

// 安卓14的情况如下:
Calendar now = Calendar.getInstance();
        //一周第一天是否为星期天
        int firstDayOfWeek = now.getFirstDayOfWeek(); // 2
        int sunday = Calendar.SUNDAY; // 1
        boolean isFirstSunday = (now.getFirstDayOfWeek() == Calendar.SUNDAY); // false

所以需要将下方的计算函数改为:

if (isFirstSunday) {
            weekDay = weekDay - firstDayOfWeek ;
            if (weekDay == 0) {
                weekDay = 7;
            }
        }

希望作者尽快更新仓库代码,感谢!!!

yvyan avatar Dec 22 '23 08:12 yvyan