package com.bjsxt.cai.test;
import java.util.Calendar;
import java.util.Date;
import java.util.GregorianCalendar;
/**
* Calendar 类是一个抽象类,为我们提供了关于日期计算的相关功能,比如:年、月、
* 日、时、分、秒的展示和计算。
*
* GregorianCalendar(公历) 是Calendar 的一个具体子类,提供了世界上大多数国家/地区
* 使用的标准日历系统。
*
* 菜鸟雷区
* 注意月份的表示,一月是0,二月是1,以此类推,12 月是11。因为大多数人习惯于使用
* 单词而不是使用数字来表示月份,这样程序也许更易读,父类Calendar 使用常量来表示月份:
* JANUARY、FEBRUARY 等等。
*/
public class TestCanlendar {
public static void main(String[] args) {
//得到相关日期元素
GregorianCalendar calendar =new GregorianCalendar(1995,10,26,20,20,18);
int year =calendar.get(Calendar.YEAR); //打印:1995
System.out.println(year+"年");
int month=calendar.get(Calendar.MONTH);
System.out.println(month); //打印 10 ,其实是11月 ,因为月份是0-11,代表1-12月;
int day =calendar.get(Calendar.DAY_OF_MONTH);
System.out.println(day+"日"); //打印 26
int day2 =calendar.get(Calendar.DATE);
System.out.println("第"+day2+"周"); //打印 第几周 26
//星期几 这里是 :1-7,周日是1, 周一是2......周六是7;
int date =calendar.get(Calendar.DAY_OF_WEEK); //这周的第几天;
System.out.println("这周的第几天:"+date);
System.out.print("星期几 这里是 :1-7,周日是1, 周一是2......周六是7;");
//设置日期,
GregorianCalendar calendar2 =new GregorianCalendar();
calendar2.set(Calendar.YEAR,2999);
calendar2.set(Calendar.MONTH,Calendar.FEBRUARY); //月份数:0-11
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(1995,10,26,20,20,18);
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());
}
private 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); //星期几
String week =""+((date ==0)?"日":date);
int hour = calendar.get(Calendar.HOUR);
int minute = calendar.get(Calendar.MINUTE);
int second = calendar.get(Calendar.SECOND);
System.out.printf("%d年%d月%d日,星期%s %d:%d:%d\n",year,month,
day,week,hour,minute,second);
}
}
运算截图

日历截图:

为什么星期对不上??