之前经常会用到SimpleDateFormat来格式化时间和日期,今天又遇到了。却发现还是要google,说明自己没有掌握它。现在把它的一些用法整理出来。
大多数情况下,我们用到的是SimpleDateFormat(Stringpattern)这个构造函数:其中格式可以进行如下定义。
eg:
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
每个字母定义如下
Letter | Date or Time Component | Presentation | Examples |
---|---|---|---|
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 |
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 |
然后可以使用继承自DateFormat的 format 这个方法来对日期进行格式化。举例如下:
import java.text.SimpleDateFormat;
SimpleDateFormat sdf0 = new SimpleDateFormat("Gyyyy年MM月dd日 HH时mm分ss秒");
SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");
SimpleDateFormat sdf2 = new SimpleDateFormat("yyyy-MM-dd 第w周 第D天 HH:mm:ss");
SimpleDateFormat sdf3 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss 时区1:z");
SimpleDateFormat sdf4 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss 时区1:Z");
SimpleDateFormat sdf5 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss 小时1-24:k");
SimpleDateFormat sdf6 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss 微秒:S");
Date currentDate = new Date(System.currentTimeMillis());
System.out.println(sdf0.format(currentDate));
System.out.println(sdf1.format(currentDate));
System.out.println(sdf2.format(currentDate));
System.out.println(sdf3.format(currentDate));
System.out.println(sdf4.format(currentDate));
System.out.println(sdf5.format(currentDate));
System.out.println(sdf6.format(currentDate));
结果如下:
公元2011年07月25日 12时08分01秒
2011/07/25 12:08:01
2011-07-25 第31周 第206天 12:08:01
2011-07-25 12:08:01 时区1:CST
2011-07-25 12:08:01 时区1:+0800
2011-07-25 12:08:01 小时1-24:12
2011-07-25 12:08:01 微秒:250