javaweb 时间日期转换方法小结

直接上代码

一、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; 正确

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值