public final class DatePattern extends Object
Letter Date or Time Component Presentation 示例 G
Era designator Text AD,公元,公元前
y
Year Year 1996
;96
M
Month in year Month July
;Jul
;07
w
Week in year Number 27
W
Week in month Number 2
D
Day in year Number 189
d
Day in month Number 10
F
Day of week in month Number 2
E
Day in week Text Tuesday
;Tue
EEEE
星期 星期二
a
Am/pm marker Text PM
H
Hour in day (0-23) Number 0
k
Hour in day (1-24) Number 24
K
Hour in am/pm (0-11) Number 0
h
Hour in am/pm (1-12) Number 12
m
Minute in hour Number 30
s
Second in minute Number 55
S
Millisecond Number 978
z
Time zone General time zone Pacific Standard Time
;PST
;GMT-08:00
Z
Time zone RFC 822 time zone -0800
如果使用了YYYY的格式符来格式化日期,那么就有可能用错格式了.
那么日期为什么忽然变得不对了?原因是开发人员误用的格式符代表的是一种不同的日历系统.
现行的公历通常被称为格里高利历(Gregorian calendar),它以400年为一个周期,在这个周期中,一共有97个闰日,在这种历法的设计中,闰日尽可能均匀地分布在各个年份中,所以一年的长度有两种可能:365天或366天.
而本文提到的被错误使用的历法格式(YYYY),是国际标准ISO 8601所指定的历法.
这种历法采用周来纪日,样子看起来是这样的 :2009-W53-7.对于格里高利历中的闰日,它也采用"闰周"来表示,所以一年的长度是364或371天.
并且它规定,公历一年中第一个周四所在的那个星期,作为一年的第一个星期.
这导致了一些很有意思的结果,公历每年元旦前后的几天,年份会和ISO 8601纪年法差一年.
比如,2015年的第一个周四是1月1日,所以1月1日所在的那周,就变成了2015年的第一周.代表ISO 8601的格式符是YYYY,注意是大写的,而格里高利历的格式符是小写的yyyy,如果不小心把这两者搞混了,时间就瞬间推移了一年!维基百科上也有词条专门解释ISO 8601.注意:YYYY是 jdk1.7+支持的格式,jdk1.7-的版本,
SimpleDateFormat
会抛异常
SimpleDateFormat
,
DateFormatUtils
,
"org.springframework.format.annotation.DateTimeFormat",
"java.time.format.DateTimeFormatter",
慎用Java日期格式化,
各国的时间格式,
Dates in ChineseModifier and Type | Field and Description |
---|---|
static String |
BASIC_ISO_DATE
The ISO date formatter that formats or parses a date without an offset, such as '20111203' ,
"yyyyMMdd" . |
static String |
CHINESE_DATE
中文日期格式,年月日
"yyyy\u5e74MM\u6708dd\u65e5" . |
static String |
CHINESE_DATE_AND_TIME
中文日期+时间格式
"yyyy\u5e74MM\u6708dd\u65e5 HH:mm:ss" .. |
static String |
COMMON_DATE
只有日期 年月日
"yyyy-MM-dd" . |
static String |
COMMON_DATE_AND_TIME
"yyyy-MM-dd HH:mm:ss" . |
static String |
COMMON_DATE_AND_TIME_WITH_MILLISECOND
带毫秒的时间格式
"yyyy-MM-dd HH:mm:ss.SSS" . |
static String |
COMMON_DATE_AND_TIME_WITHOUT_SECOND
不带秒
"yyyy-MM-dd HH:mm" . |
static String |
COMMON_DATE_AND_TIME_WITHOUT_YEAR_AND_SECOND
不带年 不带秒
"MM-dd HH:mm" . |
static String |
COMMON_TIME
只有时间
"HH:mm:ss" . |
static String |
COMMON_TIME_WITHOUT_SECOND
只有时间且不带秒
"HH:mm" . |
static String |
DOTS_DATE
(点号格式的) 只有日期 年月日
"yyyy.MM.dd" . |
static String |
DOTS_DATE_AND_TIME
(点号格式的)
"yyyy.MM.dd HH:mm:ss" . |
static String |
DOTS_DATE_AND_TIME_WITH_MILLISECOND
(点号格式的)带毫秒的时间格式
"yyyy.MM.dd HH:mm:ss.SSS" . |
static String |
DOTS_DATE_AND_TIME_WITHOUT_SECOND
(点号格式的)不带秒
"yyyy.MM.dd HH:mm" . |
static String |
HH
二十四小时制小时
"HH" . |
static String |
INDONESIA_DATE
印尼日期格式
"dd/MM/yyyy" . |
static String |
INDONESIA_DATE_AND_TIME
印尼 带时分秒的时间格式
"dd/MM/yyyy HH:mm:ss" . |
static String |
MM
MM月份
"MM" . |
static String |
MONTH_AND_DAY
月日
"MM-dd" . |
static String |
MONTH_AND_DAY_WITH_WEEK
月日带星期
"MM-dd(E)" . |
static String |
TIMESTAMP
时间戳, 一般用于拼接文件名称
"yyyyMMddHHmmss" . |
static String |
TIMESTAMP_WITH_MILLISECOND
带毫秒的时间戳,
"yyyyMMddHHmmssSSS" . |
static String |
TO_STRING_STYLE
|
static String |
YEAR_AND_MONTH
年月 带水平线,一般用于分类日志,将众多日志按月分类
"yyyy-MM" . |
public static final String COMMON_DATE
"yyyy-MM-dd"
.
example:2012-01-22
DateFormatUtils.ISO_8601_EXTENDED_DATE_FORMAT
,
"java.time.format.DateTimeFormatter#ISO_LOCAL_DATE",
Date and time format - ISO 8601,
Constant Field Valuespublic static final String COMMON_DATE_AND_TIME_WITHOUT_SECOND
"yyyy-MM-dd HH:mm"
.
example: 2013-12-27 22:13
public static final String COMMON_DATE_AND_TIME
"yyyy-MM-dd HH:mm:ss"
.
example:2013-12-27 22:13:55
public static final String COMMON_DATE_AND_TIME_WITH_MILLISECOND
"yyyy-MM-dd HH:mm:ss.SSS"
.
example: 2013-12-27 22:13:55.453
public static final String DOTS_DATE
"yyyy.MM.dd"
.
example:2018.01.02
public static final String DOTS_DATE_AND_TIME_WITHOUT_SECOND
"yyyy.MM.dd HH:mm"
.
example: 2018.01.02 22:13
public static final String DOTS_DATE_AND_TIME
"yyyy.MM.dd HH:mm:ss"
.
example:2018.01.02 22:13:55
public static final String DOTS_DATE_AND_TIME_WITH_MILLISECOND
"yyyy.MM.dd HH:mm:ss.SSS"
.
example: 2018.01.02 22:13:55.453
public static final String COMMON_TIME_WITHOUT_SECOND
"HH:mm"
.
example:21:57
public static final String COMMON_TIME
"HH:mm:ss"
.
example:21:57:36
DateFormatUtils.ISO_8601_EXTENDED_TIME_FORMAT
,
"java.time.format.DateTimeFormatter#ISO_LOCAL_TIME",
Constant Field Valuespublic static final String COMMON_DATE_AND_TIME_WITHOUT_YEAR_AND_SECOND
"MM-dd HH:mm"
.
example: 12-27 22:13
public static final String TIMESTAMP
"yyyyMMddHHmmss"
.
example: 20131227215816
public static final String TIMESTAMP_WITH_MILLISECOND
"yyyyMMddHHmmssSSS"
.
example: 20131227215758437
public static final String YEAR_AND_MONTH
"yyyy-MM"
.
example: 2012-01
public static final String MONTH_AND_DAY
"MM-dd"
.
example: 01-22
public static final String MONTH_AND_DAY_WITH_WEEK
"MM-dd(E)"
.
example: 01-22(星期四)
public static final String INDONESIA_DATE
public static final String INDONESIA_DATE_AND_TIME
public static final String MM
"MM"
.
example: 12
public static final String BASIC_ISO_DATE
"yyyyMMdd"
.
example: 20131227
public static final String HH
"HH"
.
example: 21
public static final String TO_STRING_STYLE
Date.toString()
使用的格式,并且Locale.US
"EEE MMM dd HH:mm:ss zzz yyyy"
.
example: 星期五 十二月 27 22:13:55 CST 2013
public static final String CHINESE_DATE
"yyyy\u5e74MM\u6708dd\u65e5"
.
example:2015年07月17日
public static final String CHINESE_DATE_AND_TIME
"yyyy\u5e74MM\u6708dd\u65e5 HH:mm:ss"
..
example: 2015年07月17日 15:33:00
Copyright © 2008-2019 by feilong