Java如何获取日期以及日期计算---Calendar日历类

package calendar;

import java.util.Calendar;
import java.util.Date;

/**
 * Calendar日历类是一个抽象类,不能实例化
 * java.util.Calendar:日历类
 * 实现类:java.util.GregorianCalendar
 * @author Administrator
 *
 */
public class CalendarDemo {

	public static void main(String[] args) {
		//获取Calendar对象
		Calendar cal = Calendar.getInstance();
//		System.out.println(cal.getClass().getName());
		//输出cal
		System.out.println(cal);
		/*
		 * cal.getTime();
		 * 返回Date类型
		 * Calendar转Date
		 * 结果例:Wed Jul 08 14:08:09 CST 2020
		 */
		Date date = cal.getTime();
		System.out.println(date);
		/*
		 * void setTime(Date date);
		 *  Date转Calendar
		 * 结果例:java.util.GregorianCalendar[time=0,areFieldsSet=true,areAllFieldsSet=true,lenient=true,zone=sun.util.calendar.ZoneInfo[id="Asia/Shanghai",offset=28800000,dstSavings=0,useDaylight=false,transitions=19,lastRule=null],firstDayOfWeek=1,minimalDaysInFirstWeek=1,ERA=1,YEAR=1970,MONTH=0,WEEK_OF_YEAR=1,WEEK_OF_MONTH=1,DAY_OF_MONTH=1,DAY_OF_YEAR=1,DAY_OF_WEEK=5,DAY_OF_WEEK_IN_MONTH=1,AM_PM=0,HOUR=8,HOUR_OF_DAY=8,MINUTE=0,SECOND=0,MILLISECOND=0,ZONE_OFFSET=28800000,DST_OFFSET=0]
		 */
		Date d = new Date(0);
		cal.setTime(d);
		System.out.println(cal);
		/*
		 * int get(int field);
		 * 返回当前日期的各种信息包括年月日时分秒等
		 * 参数field指定获得日期信息的哪一个
		 * Calendar定义好了很多常量,使用定义好的常量即可
		 */
		//获得年    结果例:2020
		int year = cal.get(Calendar.YEAR);
		System.out.println(year);
		//获得月(月是0-11,所以结果应该+1)   结果例:7
		int month = cal.get(Calendar.MONTH)+1;
		System.out.println(month);
		//获得日   结果例:8
		int dat = cal.get(Calendar.DATE);
		System.out.println(dat);
		//获得时(HOUR不能区分上下午,这里使用HOUR_OF_DAY)   结果例:14
		int hour = cal.get(Calendar.HOUR_OF_DAY);
		System.out.println(hour);
		//获得分   结果例:21
		int minute = cal.get(Calendar.MINUTE);
		System.out.println(minute);
		//获得秒   结果例:27
		int second = cal.get(Calendar.SECOND);
		System.out.println(second);
		/*
		 * Calendar.DATE:月中的天
		 * Calendar.DAY_OF_MONTH:月中的天(同上一个效果)
		 * Calendar.DAY_OF_WEEK:周中的天
		 * Calendar.DAY_OF_YEAR:年中的天
		 */
		//周日为1,第一天
		int dow = cal.get(Calendar.DAY_OF_WEEK);
		System.out.println(dow);
		//定义数组
		String[] days = {"日","一","二","三","四","五","六"};
		System.out.println("今天是星期"+days[dow-1]);
		//年中的天
		int doy = cal.get(Calendar.DAY_OF_YEAR);
		System.out.println(doy);
		/*
		 * 获得指定日期信息的最大值
		 * int getActualMaximum(int field);
		 */
		//今年一共有多少天
		int daysum = cal.getActualMaximum(Calendar.DAY_OF_YEAR);
		System.out.println(daysum);
		//当月最大天数
		int monthsum = cal.getActualMaximum(Calendar.DAY_OF_MONTH);
		System.out.println(monthsum);
		
		/*
		 * void set(int field,int value);
		 * 第一个参数是日期常量,第二个参数是值
		 */
		//调整年
		cal.set(Calendar.YEAR, 2012);
		//调整月(第二个参数可以用英文,或者用数字-1)
		cal.set(Calendar.MONTH, Calendar.AUGUST);
		cal.set(Calendar.MONTH, 8-1);
		//调整日
		cal.set(Calendar.DATE, 8);
		//调整时
		cal.set(Calendar.HOUR_OF_DAY, 23);
		//调整分
		cal.set(Calendar.MINUTE, 59);
		//调整秒
		cal.set(Calendar.SECOND, 58);
		System.out.println(cal);
		System.out.println(cal.getTime());
		/*
		 * 以上只是修改了我们指定修改的部分,没有修改的信息依然没变
		 * 解决方案:cal.getTime()或add方法刷新修改内容
		 */
		System.out.println(cal);
		
		/*
		 * add(int field,int amout)
		 * 第一个参数是增加的日期类型,第二个参数是增加的值
		 * 第二个参数为正数则增加,为负数则减少
		 */
		//查看3年2个月零5天之后的日子
		cal.add(Calendar.YEAR, 3);
		cal.add(Calendar.MONTH, 2);
		cal.add(Calendar.DATE, 5);
		System.out.println(cal.getTime());
		//查询当周的周五是哪天
		cal.set(Calendar.DAY_OF_WEEK,Calendar.FRIDAY);
		System.out.println(cal.getTime());
	}

}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值