-
共同点:都是用来表示时间的类。
不同点:
- Date的大多数方法都已经被废弃了,现在都在使用Calendar。
- Date的创建: Date date = new Date()
- Calendar的创建则是通过Calendar calendar = Calendar.getInstance();因为Calendar的构造方法是protected,所以无法通过new进行创建
-
Date类的使用:
package com.Class.DateClass;
import java.util.Date;
public class test {
public static void main(String[] args) {
// 1 创建Date对象
Date date1 = new Date();
System.out.println(date1.toString()); //Mon Oct 19 13:32:07 CST 2020
System.out.println(date1.toLocaleString()); // 已过时 但也能用 2020-10-19 13:32:07
// 创建昨天的
Date date2 = new Date(date1.getTime() - (60*60*24*1000));
System.out.println(date2.toLocaleString());//2020-10-18 13:32:07
// 2 方法after before
boolean b1 = date1.after(date2);
System.out.println(b1); //true
boolean b2 = date1.before(date2);
System.out.println(b2); //false
// 比较compareTo();比较的是毫秒值
int d = date1.compareTo(date2);
System.out.println(d); //如果参数Date等于此Date,则值为0 ; 如果此日期在Date参数之前,该值小于0 ; 如果此日期在Date参数0则值大于0
// 比较是否相等 equals()
boolean b3 = date1.equals(date2);
System.out.println(b3); // false
}
}
- Calendar类的使用:
package com.Class.CalendarClass;
import java.util.Calendar;
public class tset {
public static void main(String[] args) {
// 1. 创建 Calendar 对象
Calendar calendar = Calendar.getInstance();
System.out.println(calendar.getTime().toLocaleString());//2020-10-19 13:45:36
// 2. 获取时间信息
// 获取年
int year = calendar.get(Calendar.YEAR);
// 获取月 从 0 - 11 ,calendar.get(Calendar.MONTH)+1才是你当前的月数
int month = calendar.get(Calendar.MONTH)+1;
// 日
int day = calendar.get(Calendar.DAY_OF_MONTH);
// 小时
int hour = calendar.get(Calendar.HOUR_OF_DAY);
// 分钟
int minute = calendar.get(Calendar.MINUTE);
// 秒
int second = calendar.get(Calendar.SECOND);
System.out.println(year+"年"+month+"月"+day+"日"+hour+"时"+minute+"分"+second+"秒");//2020年10月19日13时45分36秒
// 3. 修改时间
Calendar calendar2 = Calendar.getInstance();
calendar2.set(Calendar.DAY_OF_MONTH, 1);//
System.out.println(calendar2.getTime().toLocaleString());//2020-10-1 13:45:36
// 4. add修改时间
calendar2.add(Calendar.HOUR, 1); // amount为正就加 负就减
System.out.println(calendar2.getTime().toLocaleString());//2020-10-1 14:45:36
// 5. 补充方法
int max = calendar2.getActualMaximum(Calendar.DAY_OF_MONTH);// 月数最大天数
System.out.println(max);
int min = calendar2.getActualMinimum(Calendar.DAY_OF_MONTH);// 月数最小天数
System.out.println(min);
}
}
- SimpleDateFormat类:以语言环境有关的方式来格式化和解析日期的具体类。 格式化:日期-->文本 解析:文本-->日期
常用的时间模式字母:
| 字母 | 日期或者时间 | 示例 |
|---|---|---|
| y | 年 | 2020 |
| M | 年中月份 | 08 |
| d | 月中天数 | 20 |
| H | 一天中的小时数( 0-23 ) | 16 |
| m | 分钟 | 42 |
| s | 秒 | 52 |
| S | 毫秒 | 357 |
| --> 一个小小的示例: |
package com.Class.SimpleDateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
public class test {
public static void main(String[] args) {
//1.创建SimpleDateFormat对象y年M月
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH-mm-ss");
//2.创建Date对象
Date date = new Date();
//格式化Date:日期转换成字符串
String str = sdf.format(date);
System.out.println(str);
//解析:字符串转换成日期
//这里括号内的字符串要和上面创建SimpleDateFormat括号内的格式一样,否则则会抛出异常报错
try {
Date date1 = sdf.parse("2020-02-02 12-34-56");
System.out.println(date1.toLocaleString());
} catch (ParseException e) {
e.printStackTrace();
}
}
}
输出结果: