一、背景
在使用Java做时间格式化时,我们一般会用yyyy-MM-dd HH:mm:ss
来表示某年某月某日某小时某分钟某秒的时间,但是到了Goland这边却是用2006-01-02 15:04:05,为什么呢?
所以我就有几个疑问:
- 为什么不用传统的
yyyy-MM-dd HH:mm:ss格式而用固定难记的2006-01-02 15:04:05? - 为什么不能用其他的时间格式如
2010-02-03 20:10:30?
二、原因分析
1、为什么不用传统的yyyy-MM-dd HH:mm:ss格式而用固定难记的2006-01-02 15:04:05?
2006-01-02 15:04:05虽然固定难记,但是可以实现比较复杂的时间格式化。比如2024-02-14 02:14:00想输出24-2-14 2:14:00
,只需要修改时间格式为06-1-2 3:04:05,而传统的yyyy-MM-dd HH:mm:ss则无法实现。
2、为什么不能用其他的时间格式如2010-02-03 20:10:30?
2006-01-02 15:04:05的设计其实也没太多特殊含义,只是为了方便记忆。因为按照ANSIC标准的日期格式,是按照月、日、时、分、秒、年、MST时区,所以我们仔细看的话会发现2006-01-02 15:04:05刚好对应1、2、3、4、5、6、7。
Jan 2 15:04:05 2006 MST
1 2 3 4 5 6 -7
三、一些常见的场景
| 功能 | 日期格式 | 输出(以2024-02-22 19:45:30举例) |
|---|---|---|
| 输出当前时间 | 2006-01-02 15:04:05 | 2024-02-22 19:45:30 |
| 输出当前时间(12小时制) | 2006-01-02 03:04:05 | 2024-02-22 07:45:30 |
| 输出年月日(逗号间隔) | 2006.01.02 | 2024.02.22 |