@[TOC]
0 写在前面
上一篇写了一下Java中如何处理时间,但是默认时间格式为星期、月、日、小时、分、秒、年。不符合国人的阅读规范,一般我们看时间的习惯为:年、月、日、时、分、秒。这样的,Java中可用SimpleDateFormat 格式化日期。
1 讲解
SimpleDateFormat 允许选择任何用户自定义日期时间格式来运行。
格式:new SimpleDateFormat("自定义格式").format(Date类时间)
但是这个自定义格式不是随便定义的,需要用英文字母去代表一些什么。
注意!以下字母区分大小写,例如大写H代表24小时制,小写h代表12小时制
G | 纪元标记
y | 四位年份
M | 月份 July or
d | 一个月的日期
h | A.M./P.M.(1~12)格式小时
H | 一天中的小时(0~23)
m | 分钟数
s | 秒数
S | 毫秒数
E | 星期几
D | 一年中的日子
F | 一个月中第几周的周几
w | 一年中第几周
W | 一个月中第几周
a | A.M./P.M.标记
k | 一天中的小时
K | A.M./P.M.(0~11)格式小时
z | 时区 Eastern Standard Time
' | 文字定界符 Delimiter
" | 单引号 `
我现在常用的就是: "yyyy-MM-dd HH:mm:ss",比较符合开发和国人阅读习惯。
2 举例
这里准备输出当前时间,以"年-月-日 时:分:秒"的格式输出。
代码:
import java.text.SimpleDateFormat;
import java.util.Date;
public class TestSimpleDateFormat {
public static void main(String[] args) {
Date date = new Date();//获取当前时间
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");//创建自定义格式
String formatTime= simpleDateFormat.format(date);//格式化时间
System.out.println(formatTime);//输出格式化后的时间
}
}
当然,也可以直接使用一长串:
String formatTimeString = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date());
两个结果是一样的:
3 写在末尾
自定义格式化时间嘛。怎么样格式化都可以,例如"yy-M-dd hh:mm:ss"这样的格式,结果也可以识别出来,22-11-30 07:39:31 但是这样有很大的问题,如果时间久了没办法分辨是1922年还是2022年,是早晨7点还是晚上七点。这样令人混淆。
所以当进行开发的时候,最好大家统一一个格式,不容易出错,还方便。
有兴趣的小伙伴可以尝试一下每个字母的具体使用。