jstl有很多时间格式化的标签,但貌似只是支持date型的,更多的我也没去细搜,不过貌似就是不支持long型,其实long型对我们也是很有
用的,比如说按时间排序、、很方便是不是、 在jstl里就比较麻烦了,好在jstl可以写自定义标签,写这篇文章的目的其实也不只是介绍这个
long型时间格式化问题,主要还是怎么写自定义标签.
在web.xml 中要添加这些东西:
datetag.tld则按下面书写
最后jsp中就可以使用如下标签进行写代码了
<date:date value="${time}" pattern="yyyy-MM-dd HH:mm:ss"/>
别忘记在页头加上引用 <%@ taglib uri="/tags" prefix="date"%> 否则会报错哦
如果想使用多个自定义的标签可以编写多个类,然后再tld中进行添加对用的tag就可以啦
用的,比如说按时间排序、、很方便是不是、 在jstl里就比较麻烦了,好在jstl可以写自定义标签,写这篇文章的目的其实也不只是介绍这个
long型时间格式化问题,主要还是怎么写自定义标签.
package com.controller.touch;
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import javax.servlet.jsp.JspException;
import javax.servlet.jsp.tagext.TagSupport;
/**
* 用于页面jstl时间格式化
* @author jiangnan
*
*/
public class JSTLDateUtils extends TagSupport {
/**
*
*/
private static final long serialVersionUID = -3354015192721342312L;
private String value;
public void setValue(String value) {
this.value = value;
}
private String parttern;
public void setValue(String parttern ) {
this.value = parttern ;
}
public int doStartTag() throws JspException{
String vv = String.valueOf(value);
long time = Long.valueOf(vv);
Calendar c = Calendar.getInstance();
c.setTimeInMillis(time);
SimpleDateFormat dateformat =new SimpleDateFormat(parttern);
String s = dateformat.format(c.getTime());
try {
pageContext.getOut().write(s);
} catch (IOException e) {
e.printStackTrace();
}
return super.doStartTag();
}
public static void main(String[] args) {
long a =1332744845078l;
long time = Long.valueOf(a);
Calendar c = Calendar.getInstance();
c.setTimeInMillis(time);
SimpleDateFormat dateformat =new SimpleDateFormat("MM-dd HH:mm");
String s = dateformat.format(c.getTime());
System.out.println(s);
}
}
在web.xml 中要添加这些东西:
<!-- 自定义JSTL时间格式化 -->
<jsp-config>
<taglib>
<taglib-uri>/tags</taglib-uri>
<taglib-location>/WEB-INF/datetag.tld</taglib-location>
</taglib>
</jsp-config>
datetag.tld则按下面书写
<?xml version="1.0" encoding="UTF-8"?>
<taglib>
<tlib-version>1.1</tlib-version>
<jsp-version>1.2</jsp-version>
<short-name>date</short-name>//这里说明一下,开始我也没加这个东西,但是发现resin疯狂的报错啊,后来才发现resin对tld文件做严格语法检查,所以一定要加上这个
<tag>
<name>date</name>
<tag-class>com.controller.touch.JSTLDateUtils</tag-class>
<attribute>
<name>value</name>
<required>true</required>
<rtexprvalue>true</rtexprvalue>
</attribute>
<attribute>
<name>parttern</name>
<required>true</required>
<rtexprvalue>true</rtexprvalue>
</attribute>
</tag>
</taglib>
最后jsp中就可以使用如下标签进行写代码了
<date:date value="${time}" pattern="yyyy-MM-dd HH:mm:ss"/>
别忘记在页头加上引用 <%@ taglib uri="/tags" prefix="date"%> 否则会报错哦
如果想使用多个自定义的标签可以编写多个类,然后再tld中进行添加对用的tag就可以啦