Java中对于时间格式的处理(@DateTimeFormat)

在Spring-MVC中
映射类声明变量前,加入此注解

@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss" )

原因是:页面将数据传到后台,是以字符串的形式。所以时间格式会出错。加上此注解,后台可解析时间格式的字符串。但是后台传到前台,前台没办法解析。需要做如下操作。

Date.prototype.format = function (format) { 
    var o = {  
        "M+": this.getMonth() + 1, // month  
        "d+": this.getDate(), // day  
        "h+": this.getHours(), // hour  
        "m+": this.getMinutes(), // minute  
        "s+": this.getSeconds(), // second  
        "q+": Math.floor((this.getMonth() + 3) / 3), // quarter  
        "S": this.getMilliseconds()  
        // millisecond  
    }; 
    if (/(y+)/.test(format))  
        format = format.replace(RegExp.$1, (this.getFullYear() + "")  
            .substr(4 - RegExp.$1.length));  
    for (var k in o)  
        if (new RegExp("(" + k + ")").test(format))  
            format = format.replace(RegExp.$1, RegExp.$1.length == 1 ? o[k] : ("00" + o[k]).substr(("" + o[k]).length));  
    return format;  
}

前台调用方法:

var dt= new Date(data);  
return dt.format("yyyy-MM-dd hh:mm:ss");

总结:第一种做法:是用String 接收数据库中的时间格式,这样做,时间会在最后出现.0的情况。还做了字符串的截取。很麻烦。第二种做法:在sql中,直接将sql转成字符串date_format()函数。可是前台时间参数传不到后台。第三种使用@DateTimeFormat注解。可以解决以上问题。注意括号中的大小写。

(pattern = "yyyy-MM-dd HH:mm:ss" )

你可能感兴趣的:(Java)