Calendar日历类
Calendar类是一个抽象类,为我们提供了关于日期计算的相关功能,比如:年、月、日、时、分、秒的展示和计算。
GregorianCalendar的具体子类,提供了世界上绝大多数国家/地区使用的标准日历系统。
注意:
月份的表示,一月是0,二月是1,以此类推十二月是11,因为大多数人习惯于使用单词而不是数字表示月份,这样程序也更易读,父类Calendar使用常量来表示月份:JANUARY、FEBRUARY等等。
GregorianCalendar类和Calendar类的使用:
mport java.util.Calendar;
import java.util.Date;
import java.util.GregorianCalendar;
/**
* 测试Calendar日历类
*/
public class TestCalendar {
public static void main(String[] args) {
// 得到相关日期元素:
GregorianCalendar calendar = new GregorianCalendar(2999,10,9
,22,10,50);
int year = calendar.get(Calendar.YEAR);//打印2999
int month = calendar.get(Calendar.MONTH);//打印10
int day = calendar.get(Calendar.DAY_OF_MONTH);//打印9
int day1 = calendar.get(Calendar.DATE);//打印9
int hour = calendar.get(Calendar.HOUR);//打印22
int minute = calendar.get(Calendar.MINUTE);//打印10
int second = calendar.get(Calendar.SECOND);//打印50
// 日:Calendar.Date和Calendar.DAY_OF_MONTH同义
int date = calendar.get(Calendar.DAY_OF_WEEK);//打印3
// 周几这里是1-7周日是1,周一是2.。。周六十7
System.out.println(year);
System.out.println(month);
System.out.println(day);
System.out.println(day1);
System.out.println(date);
// 设置日期
GregorianCalendar calendar2 = new GregorianCalendar();
calendar2.set(Calendar.YEAR,2999);
calendar2.set(Calendar.MONTH,Calendar.FEBRUARY);
calendar2.set(Calendar.DATE,3);
calendar2.set(Calendar.HOUR_OF_DAY,10);
calendar2.set(Calendar.MINUTE,20);
calendar2.set(Calendar.SECOND,23);
printCalendar(calendar2);
// 日期计算
GregorianCalendar calendar3 = new GregorianCalendar(2999,10,9
,22,10,50);
calendar3.add(Calendar.MONTH,-7);//月份减7
calendar3.add(Calendar.DATE,7);//天数增加7
printCalendar(calendar3);
// 日历对象和时间对象转换
Date d = calendar3.getTime();
GregorianCalendar calendar4 = new GregorianCalendar();
calendar4.setTime(new Date());
}
static void printCalendar(Calendar calendar){
int year = calendar.get(Calendar.YEAR);
int month = calendar.get(Calendar.MONTH)+1;
int day = calendar.get(Calendar.DAY_OF_MONTH);
int date = calendar.get(Calendar.DAY_OF_WEEK)-1;//星期几
String week = ""+((date==0)?"日":date);
int hour = calendar.get(Calendar.HOUR);
int minute = calendar.get(Calendar.MINUTE);
int sencond = calendar.get(Calendar.SECOND);
System.out.printf("%d年%d月%d日,星期%s %d:%d:%d\n",year,month,day,week,hour,minute,sencond);
}
}
运行结果:
2021-06-19 04:26:48
2021-06-19
04:26:48
2021年 第25周 星期六
2021年06月第03周星期六
今天是今年第170天
dat1 :Mon Mar 04 00:00:00 CST 2030
date2 :Mon Mar 04 13:24:22 CST 2030
1、时间是一维的,在计算机中就是一个long类型的数字,选1970.1.1. 00:00:00:00为原点,单位为毫秒(1/1000),
2、DateFormat的作用是时间对象和字符串互相转化、
3、DateFormat是SimplementDateFormat的父类
4、Calendar的作用是提供了日期计算的相关功能。