Calendar与GregorianCalendar
简介
Calendar是一个抽象类。 GregorianCalendar 是 Calendar 的一个具体子类,提供了世界上大多数国家/地区使用的标准日历系统。
位于java.util包中
日历类的基本使用方法
代码
import java.util.Calendar;
import java.util.Date;
import java.util.GregorianCalendar;
/**
* 测试日历类的使用
* Calendar是抽象类
* @author dxt
*
*/
public class TestCalendar {
public static void main(String[] args){
//GregorianCalendar 是Calendar的一个具体实现类,用来建立一个日期对象(3000年11月1号,20点30分30秒)
Calendar calendar = new GregorianCalendar(3000, 10, 01, 20, 30, 30);
//打印所有信息
System.out.println(calendar);
//1. 获取日历对象的年份、月份等内容
int year = calendar.get(Calendar.YEAR);
int month = calendar.get(Calendar.MONTH); //0-11为月份,0是1月,1是2月
int day = calendar.get(Calendar.DAY_OF_YEAR);
int weekday = calendar.get(Calendar.DAY_OF_WEEK);//1-7:1是星期天,2是星期一
System.out.println(year+"/"+month+"/"+day);
//2. 设置日历的相关元素, 空构造方法将当前时间作为数据进行初始化
Calendar c2 = new GregorianCalendar();
System.out.println(c2);
c2.set(Calendar.YEAR, 2100); //将日期年份设为2100
System.out.println(c2.get(Calendar.YEAR));
//3. 日期的计算
Calendar c3 = new GregorianCalendar();
c3.add(Calendar.YEAR, 100); //往后100年
c3.add(Calendar.DATE, -100); //向前100天
System.out.println(c3.get(Calendar.YEAR));
//4. 日历对象和日期对象的转化
Date d4 = c3.getTime(); //日期对象-->时间对象,使用getTime()方法
Calendar c4 = new GregorianCalendar();
c4.setTime(new Date()); //时间对象-->日期对象,使用setTime()方法
printCalendar(c4);
}
/**
* 将日期按格式输出
* 2019/10/01 20:30:30
* @param c
*/
public static void printCalendar(Calendar c){
int year = c.get(Calendar.YEAR);
int month = c.get(Calendar.MONTH)+1;
int day = c.get(Calendar.DAY_OF_MONTH);
int hour = c.get(Calendar.HOUR_OF_DAY); //24小时制
int minute = c.get(Calendar.MINUTE);
int second = c.get(Calendar.SECOND);
System.out.println(year+"/"+month+"/"+day+" "+hour+":"+minute+":"+second);
}
}
控制台显示日历的程序
代码:
import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.GregorianCalendar;
import java.util.Scanner;
/**
* 控制台显示日历
* @author dxt
*
*/
public class TestCalendar2 {
public static void main(String[] args) throws ParseException{
//1. 显示日期输入格式
String str = "2020-10-10";
System.out.println("日期输入格式:" + str);
//2. 接收输入日期
Scanner scan = new Scanner(System.in);
str = scan.nextLine();
//3. 将输入的日期字符串 转为 日期对象
DateFormat df = new SimpleDateFormat("yyyy-MM-dd");
Date date = df.parse(str);
//4. 将日期对象转为 日历对象
Calendar c = new GregorianCalendar();
c.setTime(date);
int day = c.get(Calendar.DAY_OF_MONTH);
//5. 打印日历格式
System.out.println("日\t一\t二\t三\t四\t五\t六");
//6. 打印日历
//6.1 设置为改月第一天,便于知道从周几开始打印
c.set(Calendar.DAY_OF_MONTH, 1);
for(int i=0; i<c.get(Calendar.DAY_OF_WEEK)-1;i++){
System.out.print("\t");
}
//6.2 从第一天开始打印
int days = c.getActualMaximum(Calendar.DATE);
for(int i=0; i<days; i++){
if(c.get(Calendar.DAY_OF_MONTH) == day){
System.out.print(c.get(Calendar.DAY_OF_MONTH)+"*\t");
}
else{
System.out.print(c.get(Calendar.DAY_OF_MONTH)+"\t");
}
//如果到周六后,换行
if(c.get(Calendar.DAY_OF_WEEK) == Calendar.SATURDAY){
System.out.println();
}
//月份+1
c.add(Calendar.DAY_OF_MONTH, 1);
}
}
}
结果: