由于最近的项目中,经常需要对时间进行操作和计算,每次搜索出的计算方式都不一样,为了保证代码的统一性,还是仔细的看一下,java的时间和相关处理类,到底都有什么吧。
Date (java.util.date)
Date类的大部分方法都被标记为Deprecated过时方法。在java1.8之后,增加了新的时间处理类(java.time)。
1 | Date date = new Date(); |
Time (java.time)
Java1.8新增的类,用来扩展Date的功能。
1 | //获得当前时间 这个时间是精确到纳秒的 |
Calendar (java.util.Calendar)
Calendar可以用来截取时间的各种部分,替代了Date中作废的方法。
Calendar.MONTH 月份是从0开始计算的,所以要记得+1才是真正的月份。
1 | Calendar c = Calendar.getInstance(); // 获取当前时间的日历对象 |
GregorianCalendar是一个计算函数,是 Calendar 的一个具体子类,提供了世界上大多数国家/地区使用的标准日历系统。
通过此函数可以对日期时间进行计算。
1 | GregorianCalendar calendar = new GregorianCalendar(); |
SimpleDateFormat (java.text.SimpleDateFormat)
SimpleDateFormat继承抽象类 DateFormat。 是一个以与语言环境有关的方式来格式化和解析日期的具体类,且非线程安全。
通过它我们可以方便的把时间转换为需要的格式。
字母 | 描述 | 表示 | 示例 |
---|---|---|---|
y | 年份 | Year | 2018;18 |
M | 月份 | Month | July; Jul; 07 |
d | 月内的日期 | Number | 10 |
h | 12小时制(1~12) | Number | 12 |
H | 24小时制 (0~23) | Number | 22 |
m | 分钟数 | Number | 30 |
s | 秒数 | Number | 55 |
S | 毫秒数 | Number | 234 |
E | 星期几 | Text | Tuesday |
D | 年内的天数 | Number | 180 |
F | 月内的星期 | Number | 2 (second Wed. in July) |
w | 年内的周数 | Number | 40 |
W | 月内的周数 | Number | 1 |
a | AM/PM 标记 | Text | PM |
k | 24小时制(1~24) | Number | 24 |
K | 12小时制(0~11) | Number | 10 |
z | 时区 | General time zone | Eastern Standard Time |
PS:表格引用见参考
1 | // 假设不加Locale.ENGLISH,默认则以本系统语言(中文)显示 |