您的位置:首页 > 移动开发 > Android开发

android 设计日历表头的算法

2015-09-30 17:19 543 查看
1.主算法如下:

    private String[] getArrText() {

        int dayOfWeek = TimeUtil.getDayOfWeek();

        int date = TimeUtil.getDateOfMonth();

        int dayOfMonth = TimeUtil.getDayOfMonth(TimeUtil.getYear(), TimeUtil.getMonth());

        int dayOfMonth_Last = TimeUtil.getDayOfMonth(TimeUtil.getYear(), TimeUtil.getMonth() - 1);

        for (int i = 1; i < dayOfWeek; i++) {

            if ((date - (dayOfWeek - i)) > 0) {

                mArrWeekText[i - 1] += TimeUtil.getDayStr((date - (dayOfWeek - i)));

            } else {

                mArrWeekText[i - 1] += TimeUtil.getDayStr(dayOfMonth_Last - (dayOfWeek - i) + 1);

            }

        }

        int startId = 1;

        for (int i = dayOfWeek; i <= 7; i++) {

            if ((date + (i - dayOfWeek)) > dayOfMonth) {

                mArrWeekText[i - 1] += TimeUtil.getDayStr(startId);

                startId++;

            } else {

                mArrWeekText[i - 1] += TimeUtil.getDayStr(date + (i - dayOfWeek));

            }

        }

        return mArrWeekText;

    }

2.时间工具类

public class TimeUtil {

    public static String getHourStr(int hour) {

        if (hour < 10) {

            return "0" + hour;

        } else {

            return "" + hour;

        }

    }

    public static String getMinStr(int min) {

        if (min < 10) {

            return "0" + min;

        } else {

            return "" + min;

        }

    }

    public static String getDayStr(int day) {

        if (day < 10) {

            return "0" + day;

        } else {

            return "" + day;

        }

    }

    /**

     * 根据年月获取该月份的天数

     * 

     * @return

     */

    public static int getDayOfMonth(int year, int month) {

        Calendar calendar = Calendar.getInstance();

        calendar.set(Calendar.YEAR, year);

        calendar.set(Calendar.MONTH, month - 1);

        int dayOfMonth = calendar.getActualMaximum(Calendar.DATE);

        return dayOfMonth;

    }

    /**

     * 获取当天是星期几

     * 

     * @return

     */

    public static int getDayOfWeek() {

        Calendar calendar = Calendar.getInstance();

        int dayOfWeek = calendar.get(Calendar.DAY_OF_WEEK);

        switch (dayOfWeek) {

        case 1:

            dayOfWeek = 7;// 由于默认返回值1代表星期天

            break;

        default:

            dayOfWeek -= 1;

            break;

        }

        return dayOfWeek;

    }

    /**

     * 获取当天的日期

     * 

     * @return

     */

    public static int getDateOfMonth() {

        Calendar calendar = Calendar.getInstance();

        int dateOfMonth = calendar.get(Calendar.DATE);

        return dateOfMonth;

    }

    

    /**

     * 获取当年年份

     * 

     * @return

     */

    public static int getYear() {

        Calendar calendar = Calendar.getInstance();

        int year = calendar.get(Calendar.YEAR);

        return year;

    }

    

    /**

     * 获取当月月份

     * 

     * @return

     */

    public static int getMonth() {

        Calendar calendar = Calendar.getInstance();

        int month = calendar.get(Calendar.MONTH);

        return month + 1;

    }

    

    public boolean isToday(){

        

        return true;

    }

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: