背景
Java里的日期格式,通常我们看到 yyyy-MM-dd'T'HH:mm:ssZ
的写法是什么意思?
尤其这个T作为分隔符为什么左右有单引号,这个单引号会打印出来吗?
这个Z又是什么意思?是时区吗?如果是时区,输出的格式是什么?是类似于这样的字符串:+0800还是+08:00还是+8:00?
解释
yyyy-MM-dd'T'HH:mm:ssZ
的 T 是字符串T的意思,你也可以不用T,只不过大家习惯写成T。
- 你用字母a分隔也行:
yyyy-MM-dd'a'HH:mm:ssZ
(输出eg: 2023-09-16a15:59:01+0800) - 你多用个字母分隔页行:
yyyy-MM-dd'abc'HH:mm:ssZ
(输出eg: 2023-09-16abc15:59:01+0800)
最终打印的结果不会出现单引号,这个单引号只是这个日期格式用来表示字符或字符串的形式;
这个日期表达式不用单引号不行,因为不用会被理解为具有特殊含义的字母(类似于y、M、d这些),会运行时抛出异常。
错误示例:
yyyy-MM-ddTHH:mm:ssZ
验证的代码
java
public static void main(String[] args) {
String f = "yyyy-MM-dd'T'HH:mm:ssZ";
SimpleDateFormat sdf = new SimpleDateFormat(f);
String format = sdf.format(new Date());
System.out.println(format);
}