Java中的Date类与Calendar类笔记
1.Date
1.1java.util.Date
- 常用方法:
date.toLocaleString() //常用
getYear()+1900 //getYear()得到现在-1900的差,
getMonth()+1 // 0 -- 11,月份从0开始计数
getDate() //返回此 Date 对象表示的月份中的某一天 1-31
getDay() //星期 返回此日期表示的周中的某一天 0 = Sunday, 1 = Monday, 2 = Tuesday, 3 = Wednesday, 4 = Thursday, 5 = Friday, 6 = Saturday
//时分秒
getHours()
getMinutes()
getSeconds()
getTime() === System.currentTimeMillis() //返回系统时间戳,常用
1.2java.sql.Date
联系:java.sql.Date extends java.util.Date
两者都有构造方法 Date(long ms)
区别:
-
1.util.Date 年月日时分秒 / sql.Date 只有 年月日
-
2.sql.Date 没有无参数构造方法,但是静态方法java.sql.Date.valueOf("1999-12-23")将字符串转换成日期
-
util.Date 有无参数构造方法,但是没有静态方法java.sql.Date.valueOf("1999-12-23")将字符串转换成日期
sql<---->util相互转换:
//子类sql--->父类util 自动转换
Date date = new java.sql.Date(1436250607377L);
System.out.println(date.toString());//多态调用的子类重写的方法
//util---->sql
Date now2 = new Date();
java.sql.Date sdate3 = new java.sql.Date(now2.getTime());
日期格式化:
DateFormat df = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss S E");//模板
df.format(new java.util.Date())
2.Calendar类及常用方法
2.1.概念
-
Calendar日历类功能强大,用来替代 Date
-
如果只是简单的获取当前的时间,直接使用Date即可
-
Calendar虽然功能很强大,使用并不多,了解它!
-
2.2.常用方法
Calendar cal = Calendar.getInstance(); //获取Calendar对象
Calendar cal = new GregorianCalendar();//获取宽松的Calendar对象
cal.get(Calendar.YEAR) //获取年份
cal.set(Calendar.MONTH, 1); //设置月份
cal.add(Calendar.DATE, 1); //设置
cal.setTime(sdate); //通过Date对象设置时间
cal.getActualMaximum(Calendar.DATE) //获取该月最大天数
2.3.常用方法案例
public static void main(String[] args) {
//创建一个日历对象(当前的时间)
//Calendar cal = Calendar.getInstance();
Calendar cal = new GregorianCalendar();
System.out.println(cal.toString());
//获取日历中各个属性
System.out.println(cal.get(Calendar.YEAR));//输出年份
System.out.println(cal.get(Calendar.MONTH));//输出月份 0-11
System.out.println(cal.get(Calendar.DATE));//输出天数
System.out.println(cal.get(Calendar.DAY_OF_WEEK));//输出一个星期第第几天 3 日1 二3
System.out.println(Calendar.SATURDAY); //输出预定义的星期六是7 星期天是1 1-7
//修改日历中的各个属性 2015-7-7 ----->2015-2-1--->2015-2-2
cal.set(Calendar.MONTH, 1);
cal.set(Calendar.DATE,1);
//cal.set(Calendar.DATE,2);
cal.add(Calendar.DATE, 1);
System.out.println(cal.toString());
//Date---->Calendar
java.sql.Date sdate = Date.valueOf("2000-2-23");
cal.setTime(sdate);
System.out.println(cal);
//其他 5 1--31
//当前月的最小天数和最大天数
System.out.println(cal.getActualMinimum(Calendar.DATE));
System.out.println(cal.getActualMaximum(Calendar.DATE));
System.out.println(cal.getActualMinimum(Calendar.MONTH));
System.out.println(cal.getActualMaximum(Calendar.MONTH));
}
案例
- 万年历:
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
Calendar calendar = Calendar.getInstance();
System.out.println("请按照yyyy-MM-dd的格式输入您需要查询日历的日期(例如2020-7-1):");
String dateStr = sc.nextLine();
DateFormat ds = new SimpleDateFormat("yyyy-MM-dd");
Date date = null;
try {
date = ds.parse(dateStr);
} catch (ParseException e) {
e.printStackTrace();
}
calendar.setTime(date);
//当月的第几天
int day = calendar.get(Calendar.DATE);
int days = calendar.getMaximum(Calendar.DATE);//算出这个月有多少天
calendar.set(Calendar.DATE,1); // 设置为当月第一天,看这一天是星期几
int dayOfWeek = calendar.get(Calendar.DAY_OF_WEEK);//获取该月第一天是星期几
System.out.println("星期一\t星期二\t星期三\t星期四\t星期五\t星期六\t星期天");
//输出第一天之前的制表符
if(dayOfWeek>1) {
for (int i = 1; i < dayOfWeek-1; i++) {
System.out.print("\t");
}
}else {
for (int i = 1; i < dayOfWeek+5; i++) {
System.out.print("\t");
}
}
//输出日历
for (int i = 1; i <= days; i++) {
calendar.set(Calendar.DATE,i);
if(i==day) {
System.out.print("*");
}
//如果是星期天就换行输出
if(calendar.get(Calendar.DAY_OF_WEEK) == Calendar.SUNDAY) {
System.out.println(i);
}else {
System.out.print(i+"\t");
}
}
}

浙公网安备 33010602011771号