自定义JSP的日期格式化标签

平常在做项目的时候,经常会遇到要在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
阅读更多
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/daidaineteasy/article/details/67801889
个人分类: JAVA
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭