日期 字符串截取 格式化 标签_JAVA_编程开发_程序员俱乐部

中国优秀的程序员网站程序员频道CXYCLUB技术地图
热搜:
更多>>
 
您所在的位置: 程序员俱乐部 > 编程开发 > JAVA > 日期 字符串截取 格式化 标签

日期 字符串截取 格式化 标签

 2013/9/25 10:04:30  高军威  程序员俱乐部  我要评论(0)
  • 摘要:1.java类文件放到src的包中2.tld文件放到web.xml同级位置,根据类所在包进行改写tld文件3.jsp页面上导入的标签及使用<%@taglibprefix="my"uri="/WEB-INF/mytags.tld"%>日期格式化:<my:datevalue="${lawsublise.ci_ctime}"format="yy-MM"/>字符串截取:<my:subendStr=""maxByte="30"value="${lawsublise
  • 标签:字符串
1.java类文件 放到 src的包中
2.tld文件 放到web.xml同级位置,根据类所在包 进行 改写tld文件
3.jsp页面上导入的标签及使用
class="java" name="code">
<%@ taglib prefix="my" uri="/WEB-INF/mytags.tld"%>
日期格式化:
<my:date value="${lawsublise.ci_ctime}" format="yy-MM"/>
字符串截取:
<my:sub endStr="" maxByte="30" value="${lawsublise.ci_title}"/>


DateTag.java
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.Date;

import javax.servlet.jsp.JspException;
import javax.servlet.jsp.JspWriter;
import javax.servlet.jsp.tagext.TagSupport;

public class DateTag extends TagSupport
{
    private static final long serialVersionUID = 1047009839984509708L;
    private Object value;
    private String format;
    private String inFormat;

    public Object getValue()
    {
        return value;
    }

    public void setValue(Object value)
    {
        this.value = value;
    }

    public String getFormat()
    {
        return format;
    }

    public void setFormat(String format)
    {
        this.format = format;
    }

    public int doStartTag() throws JspException
    {
        JspWriter out = pageContext.getOut();
        String fmt = "yyyy-MM-dd HH:mm:ss";
        if (format != null)
        {
            fmt = format;
        }
        SimpleDateFormat sdf = new SimpleDateFormat(fmt);
        if (value != null)
        {
            if (value.getClass().getSimpleName().equals("Date"))
            {
                Date date = (Date) value;
                try
                {
                    out.print(sdf.format(date));
                } catch (IOException e)
                {
                }
            } else if (value.getClass().getSimpleName().equals("String"))
            {
                try
                {
                    if(inFormat!=null){
                        Date date = DateUtil.parseDate(value.toString(),inFormat);
                        out.print(sdf.format(date));
                    }else{
                        Date date = DateUtil.parseDate(value.toString());
                        out.print(sdf.format(date));
                    }
                } catch (Exception e)
                {
                }
            }
        } else
        {
        }
        return SKIP_BODY;
    }

    public String getInFormat()
    {
        return inFormat;
    }

    public void setInFormat(String inFormat)
    {
        this.inFormat = inFormat;
    }

}


DateUtil.java
import java.text.ParseException;    
import java.util.Date;    
   
/**   
 * 日期工具类   
 *    
 * @author lipinliang   
 */   
public abstract class DateUtil extends org.apache.commons.lang.time.DateUtils {    
   
    /**   
     * 默认日期格式   
     */   
    private static final String[] parsePatterns = new String[] {    
            "yyyy-MM-dd HH:mm:ss",    
            "yyyy-MM-dd",    
            "yyyy/MM/dd HH:mm:ss",    
            "yyyy/MM/dd",
            "yyyyMMddHHmmss",
            "yyyyMMddHHmm",
            "yyyyMMdd"
            // 这里可以增加更多的日期格式,用得多的放在前面    
        };    
   
    /**   
     * 使用默认的日期格式将字符串转换为日期   
     *    
     * @param str 要转换的字符串   
     * @return 转换后的日期   
     * @throws ParseException 没有匹配的日期格式   
     */   
    public static Date parseDate(String str) throws ParseException {    
        return DateUtil.parseDate(str, parsePatterns);    
    }    
   
    /**   
     * 使用给定的日期格式将字符串转换为日期   
     *    
     * @param str 要转换的字符串   
     * @param parsePattern 日期格式字符串   
     * @return 转换后的日期   
     * @throws ParseException 日期格式不匹配   
     */   
    public static Date parseDate(String str, String parsePattern) throws ParseException {    
        return DateUtil.parseDate(str, new String[] { parsePattern });    
    }    
   
}


SubTag.java
import javax.servlet.jsp.JspException;
import javax.servlet.jsp.JspWriter;
import javax.servlet.jsp.tagext.TagSupport;

public class SubTag extends TagSupport
{
    private String            value;
    private int               maxByte;
    private String            endStr;
    private static final long serialVersionUID = -6878642038499468567L;

    public int doStartTag() throws JspException
    {
        JspWriter out = pageContext.getOut();
        try
        {
            out.print(subString(value, maxByte, endStr));
        } catch (Exception e)
        {
        }
        return SKIP_BODY;
    }

    /**
     * 按字节长度截取字符串
     * @param str:源字符串
     * @param maxbyte: 字符串的byte限制
     * @param endStr: 如果超出最大byte,结尾省略字符串
     * @return String Object
     * @author Yu
     */
    public static String subString(String str, int maxByte, String endStr)
    {
        if (str == null || "".equals(str))
        {
            // 如果源字符串为空或null,返回空字符串
            str = "";
        } else
        {
            // 计算字节长度
            int byteLength = 0;
            // 计算字符长度
            int charLength = 0;
            for (; charLength < str.length(); charLength++)
            {
                // 计算每个字符的字节数,每个汉字+2byte,其它+1
                byteLength = (int) str.charAt(charLength) > 256 ? byteLength + 2 : byteLength + 1;
                // 超过最大限制字节时,按当前charLength截取字符串
                if (byteLength > maxByte)
                {
                    // 当前长度减去结尾省略字符串的长度的一半(此处将省略字符串假设为半字节字符)
                    charLength = charLength - endStr.length() / 2;
                    // 截取字符串,加上省略字符串
                    str = str.substring(0, charLength > 0 ? charLength : 0) + endStr;
                    // 跳出循环
                    break;
                }
            }
        }
        return str;
    }

    public String getValue()
    {
        return value;
    }

    public void setValue(String value)
    {
        this.value = value;
    }

    public int getMaxByte()
    {
        return maxByte;
    }

    public void setMaxByte(int maxByte)
    {
        this.maxByte = maxByte;
    }

    public String getEndStr()
    {
        return endStr;
    }

    public void setEndStr(String endStr)
    {
        this.endStr = endStr;
    }

}
  • tag.rar (2.3 KB)
  • 下载次数: 0
  • mytags.rar (476 Bytes)
  • 下载次数: 0
发表评论
用户名: 匿名