时间相关操作

日历类Calendar

2018-05-21  本文已影响99人  我是一只小小鸟_flying

1:定义

Calendar 类是一个抽象类(Abstract Class),GregorianCalendar 是它的一个具体实现。,它为特定时间与一组诸如 YEAR、MONTH、DAY_OF_MONTH、HOUR 等 日历字段之间的转换提供了一些方法,并为操作日历字段(例如获得下星期的日期)提供了一些方法。瞬间可用毫秒值来表示,它是距历元(即格林威治标准时间 1970 年 1 月 1 日的 00:00:00.000,格里高利历)的偏移量。

2:常用API

3:设置指定的一个时间

  测试:

4:获取时间信息

主要API:int get(int field); 

其中,参数 field 的值由 Calendar 类的静态常量决定。其中:YEAR 代表年,MONTH 代表月,HOUR 代表小时,MINUTE 代表分,如:

测试:

5:add方法

6:Calendar与Date转换

Calendar转为Date:

Date转为Calendar:

7:计算两个时间之间相隔天数

8.CalendarUtil

public class CalendarUtil {

/**

    * 计算指定日期为当年第几周

    * @param year      指定的年份

    * @param month    指定的月份

    * @param day      指定的日

    * @return          指定日期为当年的第几周

    */

    public static int caculateWeekOfYear(int year,int month,int day){

        Calendar c = Calendar.getInstance();

        c.set(Calendar.YEAR, year);

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

        c.set(Calendar.DATE, day);

        return c.get(Calendar.WEEK_OF_YEAR);

    }

    /**

    * 获取本月第一天是星期几

    */

    public static int getWeekOfFirstDay(Calendar c){

        Calendar calendar = c;

        calendar.set(Calendar.DAY_OF_MONTH, 1);

        return calendar.get(Calendar.DAY_OF_WEEK);

    }

    /**

    * 获取本月1号是该年的第几周

    */

    public static int getMonthStartWeek(Calendar c){

        Calendar calendar = c;

        calendar.set(Calendar.DATE, 1);

        return calendar.get(Calendar.WEEK_OF_YEAR);

    }

    /**

    * 获取当天是该年的第几周

    */

    public static int getCurrentWeekOfYear(){

        Calendar calendar = Calendar.getInstance();

        return calendar.get(Calendar.WEEK_OF_YEAR);

    }

    /**

    * 获取上月的总天数

    */

    public static int getLastMonthDays(Calendar c){

        Calendar calendar = c;

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

        return calendar.getActualMaximum(Calendar.DAY_OF_MONTH);

    }

    /**

    * 获取指定月份的总天数

    */

    public static int getCurrentMonthDays(int month){

        Calendar c = Calendar.getInstance();

        c.set(Calendar.MONTH, month);

        return c.getActualMaximum(Calendar.DAY_OF_MONTH);

    }

    /**

    * 获取指定年份有多少周

    * @param year

    */

    public static int getTotalWeekOfYear(int year){

        Calendar c = Calendar.getInstance();

        return c.getActualMaximum(Calendar.WEEK_OF_YEAR);

    }

    /**

    * 判断指定月份是否是当前月

    */

    public static boolean isCurrentMonth(int month){

        Calendar c = Calendar.getInstance();

        return (c.get(Calendar.MONTH) == month)?true:false;

    }

    /**

    * 计算指定的月份共有多少天

    */

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

        Calendar c = Calendar.getInstance();

        c.set(Calendar.YEAR, year);

        c.set(Calendar.MONTH, month);

        c.set(Calendar.DATE, 1);

        return c.getActualMaximum(Calendar.DAY_OF_MONTH);

    }

上一篇 下一篇

猜你喜欢

热点阅读