String类型转Date
代码语言:javascript复制SimpleDateFormat formatter = new SimpleDateFormat( "yyyy-MM-dd ");
//或者是具体到秒
//("yyyy-MM-dd HH:mm:ss")
String s= "2011-07-09 ";
Date date = formatter.parse(s);
Date类型转String
代码语言:javascript复制String date = formatter.format(new Date());//格式化数据
自定义格式获取当前时间
代码语言:javascript复制SimpleDateFormat fo = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String date = fo.format(new Date());
使用第三方工具类进行转化
代码语言:javascript复制//当前时间
Date date = DateUtil.date();
//当前时间
Date date2 = DateUtil.date(Calendar.getInstance());
//当前时间
Date date3 = DateUtil.date(System.currentTimeMillis());
//当前时间字符串,格式:yyyy-MM-dd HH:mm:ss
String now = DateUtil.now();
//当前日期字符串,格式:yyyy-MM-dd
String today= DateUtil.today();
Hutool工具,使用方法:pom引入或gradle配置
maven:
代码语言:javascript复制<dependency>
<groupId>cn.hutool</groupId>
<artifactId>hutool-all</artifactId>
<version>5.5.2</version>
</dependency>
gradle
代码语言:javascript复制compile 'cn.hutool:hutool-all:5.5.2'
特殊时间格式转换(EEE MMM dd HH:mm:ss ZZZ yyyy)
有些前端组件会传到后端这种格式,这种格式无法实例化到数据库
代码语言:javascript复制 String date = "Sat Mar 04 09:54:20 EET 2017";
LocalDate dateNew = ZonedDateTime
.parse(date, DateTimeFormatter.ofPattern("EEE MMM dd HH:mm:ss zzz yyyy", Locale.ENGLISH))
.toLocalDate();
java.sql.Date dateParse = java.sql.Date.valueOf(dateNew);
sout:"2017-03-04"
这种方式只会具体到天,暂时我也没有找到可以具体到时分秒的API或方法,有知道的小伙伴可以评论、私信滴滴我,感谢。
从根本上杜绝这种问题
在实体类定义中,定义为date的字段上添加
代码语言:javascript复制@JsonFormat(timezone = "GMT 8", pattern = "yyyy-MM-dd HH:mm:ss")
并且在其get方法中也添加:
代码语言:javascript复制@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT 08:00")
此时再次获得的该字段的日期格式为yyyy-MM-dd HH:mm:ss