三者之间互相转换
实际项目中遇到一些日期之间相互转换的问题,这里总结一下。废话不多说,直接上代码
例:Date类型:Thu Aug 20 10:09:10 CST 2020
String类型:2020-08-20 10:09:10
Long类型:1597889350000
附一张常用Java日期格式字母表及其含义
字母 | 含义 | 实例 |
---|---|---|
y | 年份。一般用 yy 表示两位年份,yyyy 表示 4 位年份 | 使用 yy 表示的年份,如 10; 使用 yyyy 表示的年份,如 2010 |
M | 月份。一般用 MM 表示月份,如果使用 MMM,则会根据语言环境显示不同语言的月份 | 使用 MM 表示的月份,如 08; 使用 MMM 表示月份,在 Locale.CHINA语言环境下,如“十月”;在 Locale.US语言环境下,如 Oct |
d | 月份中的天数。一般用 dd 表示天数 | 使用 dd 表示的天数,如 20 |
D | 年份中的天数。表示当天是当年的第几天, 用 D 表示 | 使用 D 表示的年份中的天数,如 300 |
E | 星期几。用 E 表示,会根据语言环境的不同, 显示不同语言的星期几 | 使用 E 表示星期几,在 Locale.CHINA 语言环境下,如“星期一”;在 Locale.US 语言环境下,如 Mon |
H | 一天中的小时数(0~23 24小时制)。一般用 HH 表示小时数 | 使用 HH 表示的小时数,如 16 |
h | 一天中的小时数(1~12 12小时制)。一般使用 hh 表示小时数 | 使用 hh 表示的小时数,如 10 (注意:10 有可能是 10 点,也可能是 22 点) |
m | 分钟数。一般使用 mm 表示分钟数 | 使用 mm 表示的分钟数,如 35 |
s | 秒数。一般使用 ss 表示秒数 | 使用 ss 表示的秒数,如 22 |
S | 毫秒数。一般使用 SSS 表示毫秒数 | 使用 SSS 表示的毫秒数,如 952 |
w | 一年中的周数 | 使用 w 表示的周数,如 50 |
W | 一个月中的周数 | 使用 W 表示的周数,如 3 |
z | 时区 | Pacific Standard Time; PST; GMT-08:00 |
Z | 时区 | -0800 |
Date类型 → String类型
//格式化日期时间格式,只取日期的可以去掉 HH:mm:ss
DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
//new Date() 获取当前系统时间,或者可以从类中取,如 user.getDate()
//Date包是 java.util.Date;别导错了
String strDate = dateFormat.format(new Date());
System.out.println("strDate--"+strDate);
输出结果:strDate–2020-08-20 10:09:10
Date类型 → Long类型
long longTime = new Date().getTime();
System.out.println("longTime--"+longTime);
输出结果:longTime–1597889350000
String类型 → Date类型
String strDate = "2020-08-20 10:09:10";
DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
try {
Date date = dateFormat.parse(strDate);
System.out.println("date--"+date);
} catch (ParseException e) {
e.printStackTrace();
}
输出结果:date–Thu Aug 20 10:09:10 CST 2020
String类型 → Long类型
//String类型 → Long类型其实就是在 string 转为 date 之后,再转为 long 型
//new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse("2020-08-20 10:09:10").getTime();
DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String strDate = "2020-08-20 10:09:10";
try {
Date date = dateFormat.parse(strDate);
long longTime = date.getTime();
System.out.println("longTime--"+longTime);
} catch (ParseException e) {
e.printStackTrace();
}
输出结果:longTime–1597889350000
Long类型 → Date类型
long longTime = 1597889350000L;
Date date = new Date(longTime);
System.out.println("date--"+date);
输出结果:date–Thu Aug 20 10:09:10 CST 2020
Long类型 → String类型
//Long类型 → String类型其实就是在 long 转为 date 之后,再转为 string 型
//new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date(1597889350000L));
long longTime = 1597889350000L;
Date date = new Date(longTime);
DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String strDate = dateFormat.format(date);
System.out.println("strDate-----"+strDate);
输出结果:strDate–2020-08-20 10:09:10
获取Timestamp类型的当前系统时间
方法1:
Timestamp d = new Timestamp(System.currentTimeMillis());
方法2:
Date date = new Date();
Timestamp nousedate = new Timestamp(date.getTime());