java日历的使用(Calendar)

来源:互联网 发布:linux # $ 编辑:程序博客网 时间:2024/05/22 02:13

Calendar类位于java.util下,是一个工具类,能够帮我们轻松的实现日期的查询和转换。


实例化:

Calendar有一个静态方法getInstance可以取得Calendar的实例,通过对实例的操作可以获得我们想要的数据。

Calendar calendar = Calendar.getInstance();//获得calendar的实例(new出一个当前日历)

获取常量:

Calendar的类里面定义了一系列的静态常量,包括:

 public static final int ERA = 0;// public static final int YEAR = 1;//年份 public static final int MONTH = 2;//月份,其中0为1月份,所以得到当前月份需要+1 public static final int WEEK_OF_YEAR = 3;//今年第几周 public static final int WEEK_OF_MONTH = 4;//当月第几周 public static final int DATE = 5;//Date型 public static final int DAY_OF_MONTH = 5;//当月第几天 public static final int DAY_OF_YEAR = 6;//当年第几天 public static final int DAY_OF_WEEK = 7;//星期几,从礼拜天开始算。

通过这些常量可以获得需要的信息:

Calendar calendar = Calendar.getInstance();int year = calendar.get(Calendar.YEAR);//打印信息为2014,其他信息的获取方法类似

方法:

set:   set(2014,03,02)设置日期为2014年4月2日(0为一月)   set(Calendar.MONTH,4) 月份修改成5月get:   get(Calendar.YEAR)得到年份setTime:   setTime(new Date())设置date型的时间getTime()://得到date型的时间add():对日期进行加减操作

例子:

Calendar calendar = Calendar.getInstance();calendar.setTime(new Date());calendar.add(Calendar.DATE,-1);//设置为前一天。calendar.add(Calendar.MONTH,-1)设置为前一个月Date date =  calendar.getTime();//打印date:Thu Mar 13 21:27:57 CST 2014long time = calendar.getTimeInMillis();//打印time:1394717480989 单位为毫秒,可通过/(1000*60*60*24)换算为天,可用做计算两个日期相差几天。

格式化日期:

//设置格式化格式SimpleDateFormat sf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");//HH为小写时为12小时制String date= sf.format(new Date());System.out.println(date);//输出结果为:2014-03-13 21:37:34

计算两个日期相差天数:

Date方式:

public class CountTwoDateDiffer {/** * 计算两个日期相差的天数 * @param args */public static void main(String[] args) {SimpleDateFormat sf = new SimpleDateFormat("yyyy-MM-dd");try {Date startDate = sf.parse("2014-03-12");long startTime = startDate.getTime();Date endDate = sf.parse("2014-03-14");long endTime = endDate.getTime();int count = (int)(endTime - startTime)/(1000*24*60*60);System.out.print(count);} catch (ParseException e) {e.printStackTrace();}}}
打印结果:2

Calendar方式:

public class CountTwoDateDiffer {/** * 计算两个日期相差的天数 * @param args */public static void main(String[] args) {Calendar calendar = Calendar.getInstance();//插入日期calendar.set(2014, 03, 12);//得到毫秒数long startTime = calendar.getTimeInMillis();calendar.set(2014,03, 14);long endTime = calendar.getTimeInMillis();System.out.println("两个日期相差"+(endTime-startTime)/(1000*24*60*60)+"天");}}
打印结果:两个日期相差2天

得到这个月最后一天的信息:

public class CalendarTest {public static void main(String[] args) {        Calendar calendar = Calendar.getInstance(); //得到一个月最后一天,Date型        int last = calendar.getActualMaximum(Calendar.DATE);        //将最后一天的日期存入calendar        calendar.set(Calendar.DATE, last);            int weekDay = calendar.get(Calendar.DAY_OF_WEEK);        Date date = calendar.getTime();            SimpleDateFormat sf = new SimpleDateFormat("yyyy-MM-dd");        String day = sf.format(date);                //1表示星期日,2表示星期一                System.out.println("这个月最后一天是"+day+"星期"+(weekDay-1));}}

这个月最后一天是2014-03-31星期3

由此可以联想到,当我们Calendar calendar =  Calendar.getInstance();生成一个实例的时候,会默认放入一个date型的值,calendar.setTime(new Date())。然后我们通过set()改变其中的年,月,日。

某一天是星期几:

//1.calendar.set(2014,03,20);//03设置的是4月份。calendar.add(Calendar.MONTH,-1);//-1为3月int weekDay = calendar.get(Calendar.DAY_OF_WEEK)-1;//星期天为1,所以要-1//2.默认的是求当月20号是礼拜几Calendar calendar = Calendar.getInstance();calendar.set(Calendar.DATE,20);int weekDay = calendar.get(Calendar.DAY_OF_WEEK);//3.SimpleDateFormat sf = new SimpleDateFormat("yyyy-MM-dd");Date date = sf.parse("2014-03-20")//首先要得到一个某一天的date类型Calendar cl = Calendar.getInstance();cl.setTime(date);int dayOfweek = cl.get(Calendar.DAY_OF_WEEK)
我们都可以直接calendar.set(年,月,日);来对日期进行操作。比如说calendar.add(Calendar.DATE,-1);


0 0