自定义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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

晓呆同学

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值