1. Date&DateFormat
java针对日期时间相关的操作提供了大量的工具类支持:java.util.Date
、java.sql.Date
、java.sql.Time
、java.sql.Timestamp
,java.util.Calendar
等。
1.1. Date
java.util.Date
是java中一个常见的用于进行日期时间处理工具类,该类出现自jdk1.0;但是由于其很多相关的操作方法或构造器不利于国际化,因此从jdk1.1开始新增java.util.Calendar
对其进行替换。
Date的常见构造器:
Date()
:构建一个以当前系统时间为标准的Date对象Date(long time)
:构建一个以指定时间毫秒数为参数的日期对象
Date d = new Date();
Date d2 = new Date(System.currentTimeMillis());
//+8
System.out.println(d);
System.out.println(d2);
Date的常用方法:
由于Date类多数时候仅用于表示一个时间,其多数方法都标记为过时,因此常用方法仅剩以下几个:
after(Date d)
: 判断当前日期是否在参数日期之后before(Date d)
:判断当前日期是否在参数日期之前getTime()
:获取当前日期所表示的时间毫秒数(从1970)
//获取指定日期的毫秒数
System.out.println(d+"--"+d.getTime());
System.out.println(d2+"=="+d2.getTime());
// 避免使用过时的构造器与方法
// Date d3 = new Date(122,6,19);
// System.out.println(d3);
//判断当前日期对象是否在参数日期之后
System.out.println(d.after(d2));
//判断当前日期对象是否在参数日期之后
System.out.println(d.before(d2));
1.2. DateFormat&SimpleDateFormat
默认的日期类所表示的时间格式不符合国人阅读习惯,因此JDK提供了用于对日期进行格式化或解析的工具类:java.text.DateFormat
,是一个抽象类。DateFormat
内部包含一些静态工厂方法用于返回特定的格式化对象,但是并不能满足所有的需求,并且其内部实现使用的是其子类SimpleDateFormat
;所以使用SimpleDateFormat
可以针对个性化的日期格式需求进行定制。
1.2.1. 常用方法
getDateTimeInstance()
:获取一个时间日期的格式化对象getDateInstance()
:获取一个日期的格式化对象getTimeInstance()
:获取一个时间的格式化对象format(Date d)
:将Date对象格式化为字符串parse(String s)
:将字符串表示的日期解析为Date对象
1.2.2. 常用构造器
SimpleDateFormat(String pattern)
:使用特定的匹配模式创建格式化对象
3.2.2.1. 匹配模式表
1.2.2.2. 参考实例
1.2.2.3. 代码案例
Date d = new Date();
//获取日期时间格式化工具
DateFormat fmt = DateFormat.getDateTimeInstance();
System.out.println(fmt.format(d));
//获取日期格式化工具
fmt = DateFormat.getDateInstance();
System.out.println(fmt.format(d));
//获取时间格式化工具
fmt = DateFormat.getTimeInstance();
System.out.println(fmt.format(d));
//如果需要显示 yyyy年MM月dd日 HH时mm分ss秒
fmt = new SimpleDateFormat("yyyy年MM月dd日 HH时mm分ss秒");
System.out.println(fmt.format(d));
// 显示 2021-10-12 14:15:22 356 时间?
fmt = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss SSS");
System.out.println(fmt.format(d));
String birth = "2000-01-11";
fmt = new SimpleDateFormat("yyyy-MM-dd");
//将字符串表示的日期解析为Date对象
Date birthday = fmt.parse(birth);
System.out.println(birthday);
1.3. 其他日期时间类
在早期版本的jdk中日期类除了提供java.util.Date
之外,还提供了一些用于表示日期,时间或日期时间更精确的日期时间类,并且这些类都是继承自java.util.Date
:
java.sql.Date
:用于表示日期java.sql.Time
:用于表时间java.sql.Timestamp
:用于表示精确的时间戳
//日期对象(只含日期部分不含时间部分)
Date date = new Date(System.currentTimeMillis());
System.out.println(date);
//格式:yyyy/MM/dd HH:mm:ss
DateFormat fmt = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");
String time = fmt.format(date);
System.out.println(time);
java.util.Date date2 = fmt.parse(time);
System.out.println(date2);
Time t = new Time(456720);
System.out.println(t.toString().substring(3));
Timestamp ts = new Timestamp(System.currentTimeMillis());
System.out.println(ts);