java.util.calendar_Java.util.Calendar类简单介绍

Java.util.Calendar类

Calendar类是一个抽象类,里面提供了很多操作日历的方法。Calendar类无法直接创建对象使用,需要利用里面的一个静态方法getInstance(),该方法返回一个Calendar对象(子类对象)。该静态方法使用默认时区和语言环境获取一个日历。这个静态方法是必须知道的否则根本玩不转Calendar。

1、Calendar类中的常量

Calendar cal = Calendar.getInstance();

cal.get(Calendar.DATE);//-----------------当天 1-31

cal.get(Calendar.DAY_OF_MONTH);//---------当天 1-31

cal.get(Calendar.DAY_OF_WEEK);//----从星期天开始计算,如果今天星期二,那么返回3

cal.get(Calendar.DAY_OF_YEAR);//-------------一年中的第多少天

cal.get(Calendar.HOUR);//-----------------------12小时制

cal.get(Calendar.HOUR_OF_DAY);//----------------24小时制,一般使用这个属性赋值

cal.get(Calendar.MILLISECOND);//----------------获取毫秒数

cal.get(Calendar.MINUTE);//---------------------分钟

cal.get(Calendar.SECOND);//--------------------获取秒

cal.get(Calendar.WEEK_OF_MONTH);//-----------一个月中的第几周

cal.get(Calendar.WEEK_OF_YEAR);//-------------一年中的第几周

cal.get(Calendar.MONTH);//-------月份,从0到11表示12个月份,比实际月份值小1

cal.get(Calendar.AM_PM);//---0代表上午 1代表下午

星期日:Calendar.SUNDAY=1

星期一:Calendar.MONDAY=2

星期二:Calendar.TUESDAY=3

星期三:Calendar.WEDNESDAY=4

星期四:Calendar.THURSDAY=5

星期五:Calendar.FRIDAY=6

星期六:Calendar.SATURDAY=7

1.1、常量小结:

一般使用常量值进行赋值,赋值时,week 与 month 是要注意的,week 需要指定 setFirstDayOfWeek , 然而,月份则需要加减 1,赋值时一般采用年、月、日、时、分、秒,分别为:Calendar.Year、Calendar.Month、Calendar.Day_of_Month、Calendar.Hour_of_day、Calendar.Minute、Calendar.Second。

2、取值方法

SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");

Calendar cal = Calendar.getInstance();

System.out.println(cal.get(Calendar.DATE));//---当前日期

System.out.println(cal.getMinimum(Calendar.DATE));//---当前日期最小值

System.out.println(cal.getMaximum(Calendar.DATE));//---当前日期最大值

2.1、取值小结

获取最大值和最小值是最常用的方法,get中的常量可以放置Year、Month、Day等常量。

时间的换算为一小时等于60分钟等于3600秒等于3600000毫秒。

3、赋值方法

SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");

Calendar cal = Calendar.getInstance();

cal.set(Calendar.YEAR, 2019);//---设置年份

cal.set(Calendar.MONTH, 9);//---设置月份

cal.set(2019, 7, 30, 13, 13, 13);//---设置年月日时分秒

System.out.println(cal.get(Calendar.YEAR)+"|"+(Calendar.MONTH-1));

System.out.println(sdf.format(cal.getTime()));

打印

2019|1

2019-08-30

3.1、赋值小结

第一种方法需要对每个(field)进行赋值,代码的重复较大,第二种方法分别对字段(field)进行赋值效率较高。

4、计算

SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");

Calendar cal = Calendar.getInstance();

cal.add(Calendar.MONTH, -1);

System.out.println(cal.get(Calendar.YEAR));

4.1、计算小结

Add方法是根据日历规则,为给定日历字段添加或者减去指定的事件,对于add方法使用 XX_OF_XX 的field进行加减计算效果更佳,而且计算准确。 对于月份如果当前为8-31,那么,加一个月的话就是9-30,这个才是真正的准确。

5、日历混合使用

5.1、获取指定年月的最后一天

public static void getLastDayOfMonth(int year,int month) {

SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");

Calendar cal = Calendar.getInstance();

cal.set(Calendar.YEAR, year);

cal.set(Calendar.MONTH, month);

cal.set(Calendar.DAY_OF_MONTH,cal.getActualMaximum(Calendar.DAY_OF_MONTH));

System.out.println(sdf.format(cal.getTime()));

}

5.2、获取当天的开始时间和结束时间

public void getThisToday(){

SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");

Calendar cal = Calendar.getInstance();

cal.set(Calendar.HOUR_OF_DAY,0);

cal.set(Calendar.MINUTE, 0);

cal.set(Calendar.SECOND,0);

String start = sdf.format(cal.getTime());

cal.set(Calendar.HOUR_OF_DAY,23);

cal.set(Calendar.MINUTE, 59);

cal.set(Calendar.SECOND,59);

String end = sdf.format(cal.getTime());

System.out.println(start+"|"+end);

}

5.3、获取一个星期的开始结束时间

public static void getThisWeekDate(){

SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");

Calendar ca = Calendar.getInstance();

ca.setFirstDayOfWeek(Calendar.MONDAY);

ca.set(Calendar.DAY_OF_WEEK,Calendar.SUNDAY);

ca.set(ca.get(Calendar.YEAR), ca.get(Calendar.MONTH),ca.get(Calendar.DATE),23,59,59);

String end = sdf.format(ca.getTime());

ca.set(Calendar.DAY_OF_WEEK, Calendar.MONDAY);

ca.set(Calendar.HOUR_OF_DAY,0);

ca.set(Calendar.MINUTE, 0);

ca.set(Calendar.SECOND,0);

String start = sdf.format(ca.getTime());

System.out.println(start+"|"+end);

}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值