一段大姨妈计算代码片段

来源:互联网 发布:linux虚拟机真机桥接 编辑:程序博客网 时间:2024/06/12 01:49
private void initDateList (int thisMonth) {        //        Logger.d ("thisMonth--->" + thisMonth);        list.clear ();        isYJSetted = false;        isAQSetted = false;        isPLSetted = false;        isToday = false;        dayIndex = 0;        allIndex = 0;        thisMonthDays = 0;        remainderIndex = 0;        startIndex = 0;        lastMonthStartNum = 0;        Calendar cal = Calendar.getInstance ();        int m = thisMonth - 1;        cal.set (year, m, 1);        int addedCount = 0;        int dayInWeek = cal.get (Calendar.DAY_OF_WEEK);        int monthStart = dayInWeek;        if (monthStart == 1) {            monthStart = 8;        }        monthStart -= 1;  //以日为开头-1,以星期一为开头-2        if (monthStart > 0) {            cal.set (Calendar.DAY_OF_MONTH, 0);//这里设置为上个月最后一天(10-31)            allIndex = cal.get (Calendar.DAY_OF_MONTH);//上个月天数            cal.add (Calendar.DAY_OF_MONTH, -monthStart + 1);            lastMonthStartNum = startIndex = cal.get (Calendar.DAY_OF_MONTH);//第一格显示上个月的几号            dayIndex = allIndex - startIndex;            /** 上个月展示日期*/            for (int i = 0; i <= dayIndex; i++) {                DayBean bean = new DayBean ();                bean.type = 0;                bean.month = thisMonth - 1;                bean.day = startIndex;                bean.date = cal.getTime ();                list.add (bean);                startIndex++;                addedCount++;                cal.add (Calendar.DATE, 1);            }        }        cal.setTime (currDate);        cal.set (Calendar.DAY_OF_MONTH, 1);        DayBean bean;        /** 本月日期 */        while (cal.get (Calendar.MONTH) == m) {            bean = new DayBean ();            bean.day = cal.get (Calendar.DATE);            bean.type = 1;            bean.month = thisMonth;            bean.date = cal.getTime ();            list.add (bean);            cal.add (Calendar.DATE, 1);            addedCount++;            thisMonthDays++;        }        //        Logger.d ("thisMonthDays--->" + thisMonthDays);        remainderIndex = 42 - addedCount;        /** 下月日期*/        cal.setTime (currDate);        cal.add (Calendar.MONTH, 1);        cal.set (Calendar.DAY_OF_MONTH, 1);        for (int i = 1; i <= remainderIndex; i++) {            bean = new DayBean ();            bean.day = i;            bean.type = 2;            bean.month = thisMonth + 1;            bean.date = cal.getTime ();            list.add (bean);            cal.add (Calendar.DATE, 1);        }        /** 本页面展示日期全部加入list end*/        if (periodDate != null) {            /** 上次月经期*/            cal.setTime (periodDate);            cal.add (Calendar.DATE, -PERIOD_CYCLE);            //            Logger.d ("上次开始日期--->" + cal.get (Calendar.DAY_OF_MONTH));            for (int i = 0; i < PERIOD_LAST; i++) {                /** 月经期 */                if (cal.get (Calendar.MONTH) == m) {                    bean = list.get (cal.get (Calendar.DATE) + dayIndex);                    bean.period = 1;                } else if (cal.get (Calendar.MONTH) == m - 1) {                    int index = cal.get (Calendar.DATE) - lastMonthStartNum;                    if (index >= 0) {                        bean = list.get (index);                        bean.period = 1;                    }                }                cal.add (Calendar.DATE, 1);            }            /** 计算本次月经期之前的排卵期 */            cal.setTime (periodDate);            cal.add (Calendar.DATE, -19);            for (int i = 0; i < 10; i++) {                /** 排卵期 */                if (cal.get (Calendar.MONTH) == m) {                    bean = list.get (cal.get (Calendar.DATE) + dayIndex);                    bean.period = 2;                }                cal.add (Calendar.DATE, 1);            }            cal.setTime (periodDate);            for (int i = 0; i < PERIOD_LAST; i++) {                /** 月经期 */                if (cal.get (Calendar.MONTH) == m) {                    bean = list.get (cal.get (Calendar.DATE) + dayIndex);                    bean.period = 1;                } else if (cal.get (Calendar.MONTH) == m + 1) {                    int plus = cal.get (Calendar.DATE);                    if (plus <= remainderIndex) {                        bean = list.get (plus + dayIndex + thisMonthDays);                        bean.period = 1;                    }                }                cal.add (Calendar.DATE, 1);            }            /** 计算下次月经期前的排卵期 */            cal.setTime (periodDate);            cal.add (Calendar.DATE, PERIOD_CYCLE);            cal.add (Calendar.DATE, -19);            for (int i = 0; i < 10; i++) {                /** 排卵期 */                if (cal.get (Calendar.MONTH) == m) {                    bean = list.get (cal.get (Calendar.DATE) + dayIndex);                    bean.period = 2;                } else if (cal.get (Calendar.MONTH) == m + 1) {                    int plus = cal.get (Calendar.DATE);                    if (plus <= remainderIndex) {                        bean = list.get (plus + dayIndex + thisMonthDays);                        bean.period = 2;                    }                }                cal.add (Calendar.DATE, 1);            }            /** 计算下次月经期*/            cal.setTime (periodDate);            cal.add (Calendar.DATE, PERIOD_CYCLE);            for (int i = 0; i < PERIOD_LAST; i++) {                if (cal.get (Calendar.MONTH) == m) {                    //                    Logger.d ("这个月---》"+cal.get (Calendar.DATE));                    bean = list.get (cal.get (Calendar.DATE) + dayIndex);                    bean.period = 1;                } else if (cal.get (Calendar.MONTH) == m + 1) {                    //                    Logger.d ("下个月---》"+cal.get (Calendar.DATE));                    int plus = cal.get (Calendar.DATE);                    if (plus <= remainderIndex) {                        bean = list.get (plus + dayIndex + thisMonthDays);                        bean.period = 1;                    }                }                cal.add (Calendar.DATE, 1);            }        }        mHandler.sendEmptyMessage (1);    }
主要就是Calendar的运用。

0 0
原创粉丝点击