Calendar 类是一个抽象类,为我们提供了关于日期计算的相关功能,比如:年、月、日、时、分、秒的展示和计算。
GregorianCalendar 是 Calendar 的一个具体子类,提供了世界上大多数国家/地区使用的标准日历系统。
5种Calendar构造函数
GregorianCalendar()无参构造函数
//初始化Calendar对象
//Calendar无参构造函数
Calendar calendar1 = new GregorianCalendar();
//Calendar是抽象类,要用实现类GregorianCalendar new
printCalendar(calendar1); //自定义的函数
GregorianCalendar(int year, int month, int dayOfMonth)
Calendar calendar2 = new GregorianCalendar(2035, 10, 9);
printCalendar(calendar2);
GregorianCalendar(int year, int month, int dayOfMonth, int hourOfDay, int minute);
Calendar calendar3 = new GregorianCalendar(2035, 10, 9, 22, 10);
printCalendar(calendar3);
GregorianCalendar(int year, int month, int dayOfMonth, int hourOfDay, int minute, int second);
Calendar calendar4 = new GregorianCalendar(2035, 10, 9, 22, 10, 50);
printCalendar(calendar4);
GregorianCalendar(int year, int month, int dayOfMonth, int hourOfDay, int minute, int second, int millis);
//构造函数不可视
在Ecilpse2018中不可见
获得日期相关元素get
int year = calendar3.get(Calendar.YEAR);
int month = calendar3.get(Calendar.MONTH); //january-december月从0-11
int weekday = calendar3.get(Calendar.DAY_OF_WEEK); //1-7 星期日1,星期一2,...
int day1 = calendar3.get(Calendar.DATE);
int day2 = calendar3.get(Calendar.DAY_OF_MONTH);
设置日期的元素set
Calendar c1 = new GregorianCalendar(); //无参构造函数初始化的对象保存系统当前时间
printCalendar(c1);
c1.set(Calendar.YEAR, 5050);
printCalendar(c1);
日期计算
Calendar c2 = new GregorianCalendar();
c2.add(Calendar.YEAR, -100);
System.out.println(c2);
日期对象和时间对象的转化
Date d = c2.getTime(); //日期对象转化为时间对象
Calendar c3 = new GregorianCalendar();
c3.setTime(d); //将时间对象转化为日期对象
自定义一个打印日期的函数
打印效果: xxxx年xx月xx日 xx:xx:xx 周x
public static void printCalendar(Calendar c) {
//打印: xxxx年xx月xx日 xx:xx:xx 周x
int year = c.get(Calendar.YEAR);
int month = c.get(Calendar.MONTH)+1; //[0, 11]
int dayOfMonths = c.get(Calendar.DAY_OF_MONTH);
int dayweek = c.get(Calendar.DAY_OF_WEEK)-1; //[1, 7][日, 六]
String dayweekStr = dayweek==0 ? "日":dayweek+"";
int hour = c.get(Calendar.HOUR);
int minute = c.get(Calendar.MINUTE);
int second = c.get(Calendar.SECOND);
System.out.println(year+"年"+month+"月"+dayOfMonths+"日"+hour+"时"+minute+"分"+second+"秒"+" 周"+dayweekStr);
}
测试源码如下:
package yzy.commonclasses;
/*
* 测试日期类Calendarde使用
* GregorianCalendar->Calendar
*/
import java.util.Calendar;
import java.util.Date;
import java.util.GregorianCalendar;
public class testCanlender {
public static void main(String[] args) {
//初始化Calendar对象
//Calendar无参构造函数
Calendar calendar1 = new GregorianCalendar();
//Calendar是抽象类,要用实现类GregorianCalendar new
printCalendar(calendar1);
//GregorianCalendar(int year, int month, int dayOfMonth);
Calendar calendar2 = new GregorianCalendar(2035, 10, 9);
printCalendar(calendar2);
//GregorianCalendar(int year, int month, int dayOfMonth, int hourOfDay, int minute);
Calendar calendar3 = new GregorianCalendar(2035, 10, 9, 22, 10);
printCalendar(calendar3);
//GregorianCalendar(int year, int month, int dayOfMonth, int hourOfDay, int minute, int second);
Calendar calendar4 = new GregorianCalendar(2035, 10, 9, 22, 10, 50);
printCalendar(calendar4);
//GregorianCalendar(int year, int month, int dayOfMonth, int hourOfDay, int minute, int second, int millis);
//构造函数不可视
//获得日期相关元素
int year = calendar3.get(Calendar.YEAR);
int month = calendar3.get(Calendar.MONTH); //january-december月从0-11
int weekday = calendar3.get(Calendar.DAY_OF_WEEK); //1-7 星期日1,星期一2,...
int day1 = calendar3.get(Calendar.DATE);
int day2 = calendar3.get(Calendar.DAY_OF_MONTH);
System.out.println(year);
System.out.println(month);
System.out.println(weekday);
System.out.println(day1);
System.out.println(day2);
//设置日期的元素
Calendar c1 = new GregorianCalendar(); //无参构造函数初始化的对象保存系统当前时间
printCalendar(c1);
c1.set(Calendar.YEAR, 5050);
printCalendar(c1);
//日期计算
Calendar c2 = new GregorianCalendar();
c2.add(Calendar.YEAR, -100);
System.out.println(c2);
//日期对象和时间对象的转化
Date d = c2.getTime(); //日期对象转化为时间对象
Calendar c3 = new GregorianCalendar();
c3.setTime(d); //将时间对象转化为日期对象
printCalendar(c2); //1920年2月7日2时24分58秒周6
printCalendar(c3); //1920年2月7日2时24分58秒周6
printCalendar(c1); //5050年2月7日2时25分40秒周4
}
public static void printCalendar(Calendar c) {
//打印: xxxx年xx月xx日 xx:xx:xx 周x
int year = c.get(Calendar.YEAR);
int month = c.get(Calendar.MONTH)+1; //[0, 11]
int dayOfMonths = c.get(Calendar.DAY_OF_MONTH);
int dayweek = c.get(Calendar.DAY_OF_WEEK)-1; //[1, 7][日, 六]
String dayweekStr = dayweek==0 ? "日":dayweek+"";
int hour = c.get(Calendar.HOUR);
int minute = c.get(Calendar.MINUTE);
int second = c.get(Calendar.SECOND);
System.out.println(year+"年"+month+"月"+dayOfMonths+"日"+hour+"时"+minute+"分"+second+"秒"+" 周"+dayweekStr);
}
}