直接上代码
一、convertor转换器,字符串类型日期转换
实体类String属性定义date(不建议)
private String date;
package com.hnjx.converter;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import org.springframework.core.convert.converter.Converter;
public class CustomDateConveter implements Converter<String, Date>{
@Override
public Date convert(String source) {
// 将日期字符串转换成日期格式(yyyy-MM-dd hh-mm-ss)
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
try {
//返回上述格式Date类对象
return sdf.parse(source);
} catch (ParseException e) {
e.printStackTrace();
}
return null;
}
}
springMVC-servlet.xml 配置
<bean id="conversionService"
class="org.springframework.format.support.FormattingConversionServiceFactoryBean">
<!-- 转换器 -->
<property name="converters">
<!-- 日期类型的转换 -->
<bean class="com.hnjx.converter.CustomDateConveter"></bean>
</property>
</bean>
二、@DateTimeFormat(入参)、@JsonFormat(出参)
@JsonFormat 后台到前台的时间格式的转换
@DataFormat 前后到后台的时间格式的转换
maven引入所需jar包
<!--JsonFormat-->
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-annotations</artifactId>
<version>2.8.8</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.8.8</version>
</dependency>
<dependency>
<groupId>org.codehaus.jackson</groupId>
<artifactId>jackson-mapper-asl</artifactId>
<version>1.9.13</version>
</dependency>
<!-- joda-time @DateTimeFormat-->
<dependency>
<groupId>joda-time</groupId>
<artifactId>joda-time</artifactId>
<version>2.3</version>
</dependency>
<!-- fastjson -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.47</version>
</dependency>
public class News {
private Integer ID;
private String title;
private String link;
private String content;
private String htmlContent;
private String image;
@DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")//东八区时区
private Date time;
小计:控制器导json包时导致的错误,@JsonFormat失效
控制器
@RequestMapping(value="getNews", method={RequestMethod.POST,RequestMethod.GET})
@ResponseBody
public Object toPage(@RequestParam(defaultValue="1",
required=true,value="pageNo") Integer pageNo,
@RequestParam(required=true,value="pageSize") Integer pageSize) {
//分页查询
PageHelper.startPage(pageNo, pageSize);
List<News> newsList = newsService.queryAll();//获取所有新闻信息
PageInfo<News> pageInfo=new PageInfo<News>(newsList);
JSONObject json = new JSONObject(); //fastjson
json.put("page", pageInfo);
return json;
}
import net.sf.json.JSONObject; 错误
console.log() 打印date格式:
需要通过JS代码转换
//json格式日期转换
Date.prototype.format = function(fmt) {
var o = {
"M+" : this.getMonth() + 1, //月份
"d+" : this.getDate(), //日
"h+" : this.getHours(), //小时
"m+" : this.getMinutes(), //分
"s+" : this.getSeconds(), //秒
"q+" : Math.floor((this.getMonth() + 3) / 3), //季度
"S" : this.getMilliseconds()
//毫秒
};
if (/(y+)/.test(fmt))
fmt = fmt.replace(RegExp.$1, (this.getFullYear() + "").substr(4 - RegExp.$1.length));
for ( var k in o)
if (new RegExp("(" + k + ")").test(fmt))
fmt = fmt.replace(RegExp.$1, (RegExp.$1.length == 1) ? (o[k]): (("00" + o[k]).substr(("" + o[k]).length)));
return fmt;
}
function toDate(obj) {
var date = new Date();
date.setTime(obj.time);
date.setHours(obj.hours);
date.setMinutes(obj.minutes);
date.setSeconds(obj.seconds);
return date.format("yyyy-MM-dd hh:mm:ss"); //调用Date.prototype.format方法
}
import com.alibaba.fastjson.JSONObject; 正确