一、前言
在进行开发工作中,经常会面对两种操作。
1、把时间对象格式化成字符串后存储下来
1、把格式化好的字符串解析成时间对象
Joda-Time为这两个核心需求的解决方案就是DateTimeFormatter。
额外提一点,DateTimeFormatter在格式化和解析时是支持时区的。
二、核心对象:
2.1 DateTimeFormatter
日期格式化与解析
2.2 LocalDate
本地日期(没有时间,没有时区)
2.3 LocalTime
本地时间(没有日期,没有时区)
2.4 LocalDateTime
本地日期时间(没有时区)
2.5 DateTime
日期时间(支持时区转换)
三、示例
1、当前日期yyyy-MM-dd格式化
//当前本地日期,没有时区
LocalDate date = LocalDate.now();
//时间日期格式化,表达式与熟知的一样
DateTimeFormatter fmt = DateTimeFormat.forPattern("yyyy-MM-dd");
//2018-11-29
String dateStr = fmt.print(date);
2、当前日期时间yyyy-MM--dd HH:mm:ss格式化
//当前日期时间,没有时区
LocalDateTime now = LocalDateTime.now();
//日期格式化,通用时间表达式
DateTimeFormatter fmt = DateTimeFormat.forPattern("yyyy-MM-dd HH:mm:ss");
//2018-11-29 08:08:24
String nowStr = fmt.print(now);
3、解析日期时间并使用系统时区(example: 2019-10-28 10:23:12 )
String dateStr = "2019-10-28 10:23:12";
//根据时间表达式生成DateTimeFormatter对象
DateTimeFormatter fmt = DateTimeFormat.forPattern("yyyy-MM-dd HH:mm:ss");
//2019-10-28T10:23:12.000+08:00
DateTime dateTime = fmt.parseDateTime(dateStr);
3、解析日期时间并设置时区 (example:2019-10-28 10:23:12)
String dateStr = "2019-10-28 10:23:12";
//日期解析,通用时间表达式
DateTimeFormatter fmt = DateTimeFormat.forPattern("yyyy-MM-dd HH:mm:ss").withZone(DateTimeZone.forOffsetHours(6));
//2019-10-28T10:23:12.000+06:00
DateTime dateTime = fmt.parseDateTime(dateStr);
参考:https://blog.youkuaiyun.com/belalds/article/details/89945248