平常在做项目的时候,经常会遇到要在JSP页面中,将我们后台传过来的long型的时间戳,转换为日期格式进行显示(如后台传过来 1490715599560,我们需要在页面上显示为 2017-03-28 23:39:59),这里记录并跟大家分享一下通过自定义标签的方式进行日期格式化。
1、自定义标签处理类
package com.daidai.demo.tag;
import java.text.SimpleDateFormat;
import java.util.Date;
import javax.servlet.jsp.JspException;
import javax.servlet.jsp.tagext.TagSupport;
import org.apache.commons.lang.StringUtils;
public class DateTag extends TagSupport {
private static final long serialVersionUID = 6464168398214506236L;
// 默认日期格式
public static final String DEFAULT_FORMAT = "yyyy-MM-dd HH:mm:ss";
private String value; // long型 时间戳
private String pattern; // 日期格式,如果不传则为默认格式
@Override
public int doStartTag() throws JspException {
long l = 0l;
if (StringUtils.isNotBlank(value)) {
l = Long.parseLong(value);
}
if(StringUtils.isBlank(pattern)){
pattern = DEFAULT_FORMAT;
}
String targetTime = " ";
if(l > 0L){
targetTime = getFormatData(l, pattern);
}
try {
super.pageContext.getOut().write(targetTime);
} catch (Exception e) {
e.printStackTrace();
}
return super.doStartTag();
}
public void setValue(String value) {
this.value = value;
}
public void setPattern(String pattern) {
this.pattern = pattern;
}
/**
* long型时间戳转日期格式
* @param l
* @param formatStr
* @return
*/
public static String getFormatData(long l, String formatStr) {
Date d = new Date(l);
String date = new SimpleDateFormat(formatStr).format(d);
return date;
}
}
2、编写tld文件WEB_INF/tld/tags.tld
<?xml version="1.0" encoding="UTF-8"?>
<taglib xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-jsptaglibrary_2_0.xsd"
version="2.0">
<description>JSP Tag Library</description>
<tlib-version>1.0</tlib-version>
<short-name>daidai</short-name>
<uri>http://daidai.demo.com/tags</uri>
<tag>
<description>时间戳转日期类型</description>
<name>formatDate</name>
<tag-class>com.daidai.demo.tag.DateTag</tag-class>
<body-content>JSP</body-content>
<attribute>
<description>时间戳</description>
<name>value</name>
<required>true</required>
<rtexprvalue>true</rtexprvalue>
</attribute>
<attribute>
<description>需要输出的日期格式,默认为yyyy-MM-dd HH:mm:ss</description>
<name>pattern</name>
<required>false</required>
<rtexprvalue>false</rtexprvalue>
</attribute>
</tag>
</taglib>
3、在JSP页面中使用
<%@ taglib prefix="daidai" uri="http://daidai.demo.com/tags" %>
<daidai:formatDate value="${element.createTime}" pattern="yyyy-MM-dd"/>
如:
<daidai:formatDate value="1490715599560" pattern="yyyy-MM-dd"/>
在页面上会显示:2017-03-28