Java时间与日期类(Calendar类的方法应用与打印日历)

Java时间与日期类(Calendar类的方法应用与打印日历)

日期与时间类

(以下所有文字和代码均为手敲,原本应该昨天已经写好了一半了。没想到一关机自动保存的都不见了,然后今天再敲一遍【有什么不对或者敲错的地方请各位大神指出】)

  在实际应用中,经常需要用到时间和日期,Java提供了几个用于处理时间相关的类,Calendar就是其中之一。
  Calendar类能够用于设置和获取日历字段值:年、月、日、时、分、秒。
  该类是抽象类,通常通过使用 getInstance() 方法获得时间日期为系统时间的 Calendar 对象,get() 方法获取 Calendar 对象的时间分量; set() 方法设置时间分量。Calendar 的常用方法如表格所示。
                  Calendar类的常用方法

方法描述
static getInstance获取Calendar对象,该对象存储当前系统时间
int get(int field)获取时间分量
void set(int field,int value)设置指定时间分量的值
int void set(int year,int month,int day)设置年月日
int void set(int year,int month,int day,int hour,int minute)设置年月日时分
int void set(int year,int month,int day,int hour,int minute,int second)设置年月日时分秒
void add(int field,int amount)根据日历规则,将指定的(有符号的)时间量添加到给定的日历字段中
void roll(in field,int amount)向指定日历字段添加有符号的时间量,不更改更大的字段

以下是Calendar类的部分时间分量
                  Calendar类的部分时间分量

时间分量      额
YEAR
MONTH月(注意月的值是从0开始的,即如果取出的值为0,即为1月)
DATE
HOUR小时:用于12小时的时钟;正午和午夜用0表示,而不是12
MINUTE分钟
SECOND
HOUR_OF_DAY表示一天中的24小时的时钟
DAY_OF_WEEK一星期的第几天,星期日为第一天
DAY_OF_MONTH一个月中的第几天,从1开始
DAY_OF_YEAR一年中的第几天

###Calendar类的方法应用

public class TEXT0601 {
	public static void main(String []args) {
		Calendar today = Calendar.getInstance();//获取Calendar对象,该对象储存当前的系统时间
		System.out.print("今天是:"+today.get(Calendar.YEAR)+"年");
		System.out.print(today.get(Calendar.MONTH)+1+"月");//注意月的值从0开始,这里取出的值是7,实际上是8月,所以要加上1
		System.out.println(today.get(Calendar.DATE)+"日");
		System.out.print(today.get(Calendar.HOUR_OF_DAY)+"时");
		System.out.print(today.get(Calendar.MINUTE)+"分");
		System.out.print(today.get(Calendar.SECOND)+"秒");
		System.out.println("\t"+"(即下午"+today.get(Calendar.HOUR)+"时)");
		System.out.println("这个星期的第"+today.get(Calendar.DAY_OF_WEEK)+"天"+"(即星期三)");
		System.out.println("这个月的第"+today.get(Calendar.DAY_OF_MONTH)+"天");
		System.out.println("这一年的第"+today.get(Calendar.DAY_OF_YEAR)+"天");
		
		int a = 12;
		today.add(Calendar.DATE, a);
		System.out.print("再过"+a+"天是:"+today.get(Calendar.YEAR)+"年");
		System.out.print(today.get(Calendar.MONTH)+1+"月");
		System.out.println(today.get(Calendar.DATE)+"日");
		
		today.set(2018,8,17);
		System.out.print(today.get(Calendar.YEAR)+"年的七夕节是:");
		System.out.println(today.get(Calendar.MONTH)+"月"+today.get(Calendar.DATE)+"日");

运行结果如下:

今天是:2018年8月22日
17时27分7秒	(即下午5时)
这个星期的第4天(即星期三)
这个月的第22天
这一年的第234天
再过12天是:2018年9月3日
2018年的七夕节是:8月17日

###根据指定的年、月,显示该月的日历。

public class TEXT0602 {
	public static void main(String[]args) {
		int year,month;
		Calendar calendar = Calendar.getInstance();
		year = calendar.get(Calendar.YEAR);
		month = calendar.get(Calendar.MONTH)+1;
		if(args.length>=1) {
			try {
				year = Integer.parseInt(args[0]);
				if(year<0||year>5000) {
					System.out.println("第一个参数是0-5000的数值");
					System.exit(0);}
			}catch(NumberFormatException e){
				System.out.println("参数代表年份和月份,必须是数字!");
				
			}
		}
		if(args.length>=2) {
			try {
				month = Integer.parseInt(args[1]);
				if(month<=0||month>12) {
					System.out.println("第二个参数是1-12内的数值");
					System.exit(0);}
			}catch(NumberFormatException e){
					System.out.println("参数代表的是年份和月份,必须是数字!");
					System.exit(0);
			}
		}
		String b[] = new String[42];
		calendar.set(year,month-1,1);
		int dayOfWeek = calendar.get(Calendar.DAY_OF_WEEK)-1;//1号是星期几
		int days = 0;
		if(month==1||month==3||month==5||month==7||month==8||month==10||month==12) {
			days = 31;
		}
		if(month==4||month==6||month==9||month==11) {
			days = 30;
		}
		if(month==2) {
			if(year%4==0&&year%100!=0||year%400==0) {
				days = 29;
			}else {
				days = 28;
			}
		}
		int j;
		for(j=0;j<42;j++)
			b[j]=" ";
		for(j=0;j<days;j++) {
			b[j+dayOfWeek] = String.valueOf(j+1);
		}
		System.out.println("\t\t"+year+"年"+month+"月");
		System.out.println("\t日\t一\t二\t三\t四\t五\t六");
		for(j=0;j<42;j++) {
			if(j!=0&&j%7==0)
				System.out.println();
			if(b[j].length()==1)
				System.out.print("");
			System.out.print("\t"+b[j]);
		}
	}
	
}

运行结果如下:

这里写图片描述
本月的日历如下:
这里写图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值