Java常用类库之Date、DateFormat类
Date类
Date类代表了一个特定的时间,精度为毫秒。参照时间:1970年1月1日 0时0分0秒
常用方法
Date类构造方法:
Date() //创建一个Date对象,时间是执行这个代码的时间(当前时间)
Date(long date) //创建一个Date对象,时间是 1970年1月1日00:00:00基础上加上参数指定的毫秒值
Date类普通方法:
long getTime() //返回自1970年1月1日以来,由Date对象表示的毫秒数
void setTime(long time) //修改时间,在1970年1月1日00:00:00基础上加上参数指定的毫秒值
示例:
public class Demo {
public static void main(String[] args) {
// Date() 创建一个Date对象,时间是执行这个代码的时间(现在时间)
Date now = new Date(); // 常用
System.out.println("now = " + now); //输出结果: Tue May 26 10:31:03 CST 2020
// Date(long date) 创建一个Date对象,时间是 1970年1月1日00:00:00基础上加上参数指定的毫秒值
Date date = new Date(2000L); // 1000毫秒 就是1秒, 中国是东八区,时间比标准时间早8个小时
System.out.println("date = " + date); // Thu Jan 01 08:00:02 CST 1970
// long getTime() 返回自1970年1月1日以来,由Date对象表示的毫秒数
long time = now.getTime(); // 常用
System.out.println("now从1970年以来的毫秒值: " + time); // now从1970年以来的毫秒值: 1590460629801
// 毫秒 秒 分钟 小时 天 年
double year = time * 1.0 / 1000 / 60 / 60 / 24 / 365;
System.out.println(year); // 50.43318008717022
// void setTime(long time) 修改时间,在1970年1月1日00:00:00基础上加上参数指定的毫秒值
now.setTime(1000 * 5L);
System.out.println("now = " + now); // Thu Jan 01 08:00:05 CST 1970
}
}
DateFormat类
1.为什么要DateFormat类:
Date主要表示1970年到某个时间的毫秒值,如果输出给用户看,用户是看不太懂的:“Tue May 26 07:58:45 CST 2020”。用户实际上比较喜欢"2020年05月26日 07时58分45秒"类似这种格式
2.DateFormat类的作用:
1.格式化(日期转文本) Date转成字符串
2.解析(文本转日期) 字符串转成Date
**3.创建DateFormat对象: DateFormat是抽象类,通常我们使用子类:**SimpleDateFormat
4.需求:将当前时间的 “Date” 转成 "2020年05月26日 07时58分45秒"
格式化:将日期转成文本
5.为什么要将字符串转成Date对象
例如网站注册用户选择的年月日是一个字符串.需要将他转成Date保存到数据库中
6.需求:将字符串 “2020-05-26 10:13:31” 转成 Date对象
解析:将文本转成日期
示例:
public class Demo {
public static void main(String[] args) throws ParseException {
// 需求:将当前时间的 "Date" 转成 "2020年05月26日 07时58分45秒"
Date now = new Date(); // "Tue May 26 07:58:45 CST 2020"
// 格式化:将日期转成文本
SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日 HH时mm分ss秒");
String timeStr = sdf.format(now);
System.out.println("timeStr = " + timeStr); // 2020年05月26日 11时12分51秒
System.out.println("------------------");
// 需求:将字符串 "2020-05-26 10:13:31" 转成Date对象
String dateStr = "2020-05-26 10:13:31";
SimpleDateFormat sdf2 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
// 解析:将文本转成日期
Date parseData = sdf2.parse(dateStr); // alt + 回车 -> 选择 Add exception tomethod signature(第一项)
System.out.println("parseData = " + parseData);
}
}
小结:
1.DateFormat类的作用?
Date和String之间的转换
1.格式化(日期转文本) Date转成字符串
2.解析(文本转日期) 字符串转成Date
2.将Date对象转成字符串使用哪个方法?
String format(Date d)
3.将时间字符串转成Date对象使用哪个方法?
Date parse(String s)
4.如何指定日期格式?
1.明确最终的时间格式 如: “2020年05月26日 07时58分45秒”
2.会变化的使用特殊字符代替: “yyyy年MM月dd日 HH时mm分ss秒”