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]);
}
}
}
运行结果如下:
本月的日历如下: