工作中经常需要做时间字符串解析,一般遇到yyyy-MM-dd hh:mm:ss这种格式的比较多,但是针对2020-04-25T07:00:00+00:00这种,2020-04-12T16:00:00.000Z这种,我们该怎么解析呢
不要急,先看下这些格式里面符号代表什么
YYYY | 是公历中从0000到9999年的十进制数字。 |
- | "-" (连字符)在字符串中实际出现两次。 |
MM | 是一年中从01(一月)到12(十二月)的月份。 |
DD | 是从01到31的月份。 |
T | "T" 实际出现在字符串中,以指示时间元素的开始。 |
HH | 是从午夜以来经过的完整小时数,从00到24为两位十进制数字。 |
: | ":" (冒号)在字符串中实际出现两次。 |
mm | 是从小时开始到现在的完整分钟数,从00到59的两位十进制数字。 |
ss | 是从分钟开始算起的完整秒数,从00到59的两位十进制数字。 |
. | "." (点)字面上出现在字符串中。 |
sss | 是从秒的秒数开始的完整毫秒数,为三个十进制数字。 |
Z | 是指定为"Z" (对于UTC)或时差 "+" 或 "-" 后跟时间表达式 的时区偏移量 HH:mm |
好了,demo演示一下
@Test public void test() throws ParseException { String s="2020-04-12T16:00:00.000Z"; SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS'Z'"); Date date = format.parse(s); System.out.println(date); String s2="2020-04-25T07:00:00+00:00"; SimpleDateFormat format1 = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss"); Date date1 = format1.parse(s2); System.out.println(date1); }
结果:
这不就有了嘛