日期和时间格式由“日期和时间模式字符串”指定。在“日期和时间模式字符串”中,未加引号的字母 'A' 到 'Z' 和 'a' 到 'z' 被解释为模式字母,用来表示日期或时间字符串元素。文本可以使用单引号 (') 引起来,以免进行解释。所有其他字符均不解释;只是在格式化时将它们简单复制到输出字符串
简单来讲,这些A~Z,a~z这些字母(不被单引号包围的)会被特殊处理替换为对应的日期时间,其他的字符串还是原样输出。
日期和时间模式字符串对应表(注意大小写,代表的含义是不同的):
yyyy: | 年 | |
MM: | 月 | |
dd: | 日 | |
hh: | 小时 | 1~12小时制(1-12) |
HH: | 24小时制(0-23) | |
mm: | 分 | |
ss: | 秒 | |
S: | 毫秒 | |
E: | 星期几 | |
D: | 一年中的第几天 | |
F: | 一月中的第几个星期(会把这个月总共过的天数除以7) | |
w: | 一年中的第几个星期 | |
W: | 一月中的第几星期(会根据实际情况来算) | |
a: | 上下午标识 | |
k: | 和HH差不多,表示一天24小时制(1-24)。 | |
K: | 和hh差不多,表示一天12小时制(0-11)。 | |
z: | 表示时区 |
在项目中经常遇到时间类型的转化,这里简单记录一下我经常遇到的时间类型的转化:
从数据库调取时间类型并转换为String类型
首先将数据库表中的createTime字段设置为dateTime类型,然后将项目代码中对应的属性设置为String类型,这样输出出来的相应字段就是这样的:
2021-01-01 13:15:56
如果感觉这样的时间格式还是不够直观,那么可以将上边的时间格式转换为带有中文的时间格式:
实现代码:
public static void main(String[] args) throws Exception{
Date date = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse("2021-01-01 13:15:56");
System.out.println(date);
String now = new SimpleDateFormat("yyyy年MM月dd日HH时mm分ss秒").format(date);
System.out.println(now);
}
将会输出:
2021-01-01T05:15:56.000+00:00
2021年01月01日13时15分56秒
其实上边的转换就是先将"2021-01-01 13:15:56"转换为"2021-01-01T05:15:56.000+00:00",然后再转换为"2021年01月01日13时15分56秒"
获取当前日期
需求:获取当前日期(字符串类型)且格式为yyyy-MM-dd HH:mm:ss
实现代码:
import java.text.SimpleDateFormat;
import java.util.Date;
String pushtime = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date());
System.out.println(pushtime);
将会输出:
2020-08-01 15:12:07
暂时就想到这些,还有别的转换方式在项目中遇到再回来补充。