`
高军威
  • 浏览: 175632 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

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

阅读更多
1.java类文件 放到 src的包中
2.tld文件 放到web.xml同级位置,根据类所在包 进行 改写tld文件
3.jsp页面上导入的标签及使用
<%@ 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;
    }

}
分享到:
评论

相关推荐

    精通正则表达式基于.NET ASP PHP JSP JavaScript

    日期字符串模式匹配.php 日期字符串模式匹配 模式替换.php 模式替换 模式分割.php 模式分割 正则表达式匹配....

    PHP函数库,PHP函数大全,PHP函数实例,PHP函数手册,PHP5函数库实例

    截取字符串中两个特定唯一字符之间的内容 截取指定长度字符串 折线图 按照比例改变图片大小(非生成缩略图) 收藏主页 数据验证类 数组转换成XML格式 日期计算 是否为电子邮件格式 柱形统计图 检查是否为一...

    JS常用函数方法收集1

    cutstr.js 字符串长度截取 replaceAll.js 替换全部 trim.js 清除空格 startWith.js 判断是否以某个字符串开头 endWith.js 判断是否以某个字符串结束 HtmlEncode.js 转义html标签 dateFormat.js 时间日期格式转换 ...

    FreeMark学习笔记

    实际上FreeMarker的表达式功能非常强大,它不仅支持直接指定值,输出变量值,也支持字符串格式化输出和集合访问等功能. 3.1 直接指定值 使用直接指定值语法让FreeMarker直接输出插值中的值,而不是输出变量值.直接...

    100个直接可以拿来用的JavaScript实用功能代码片段(1-10)

    1、原生JavaScript实现字符串长度截取 2、原生JavaScript获取域名主机 3、原生JavaScript清除空格 4、原生JavaScript替换全部 5、原生JavaScript转义html标签 6、原生JavaScript还原html标签 7、原生JavaScript时间...

    delphi 开发经验技巧宝典源码

    0177 截取指定位置的字符串 115 0178 清除字符串中指定的字符 115 0179 如何实现文本的加密与解密 116 0180 提取字符串中指定子字符串后的字符串 117 0181 替换指定的字符串 117 0182 在文本中删除指定的...

    delphi 开发经验技巧宝典源码06

    0177 截取指定位置的字符串 115 0178 清除字符串中指定的字符 115 0179 如何实现文本的加密与解密 116 0180 提取字符串中指定子字符串后的字符串 117 0181 替换指定的字符串 117 0182 在文本中删除指定的...

    freemarker总结

    其它的运行符可以作用于数字和日期,但不能作用于字符串,大部分的时候,使用gt等字母运算符代替&gt;会有更好的效果,因为 FreeMarker会把&gt;解释成FTL标签的结束字符,当然,也可以使用括号来避免这种情况,如:(x&gt;y)&gt; ...

    PHP程序开发范例宝典III

    实例250 使用格式化函数转换查询条件的数据类型 385 实例251 在查询中使用字符串函数 387 实例252 在查询中使用日期函数 388 8.19 having语句应用 390 实例253 利用having语句过滤分组数据 390 ...

    C#全能速查宝典

    1.4.45 ToShortDateString方法——转换为短日期字符串 88 1.4.46 ToShortTimeString方法——转换为短时间字符串 88 1.4.47 ToString方法——转换为字符串 89 1.4.48 ToUpper方法——转换为大写 90 1.4.49 Trim方法...

    PHP开发实战1200例(第1卷).(清华出版.潘凯华.刘中华).part1

    实例112 解决用substr()函数对中文字符串截取时出现乱码的问题 143 实例113 字符串与HTML标记相互转换 144 实例114 运用PHP 5.0新型字符串输出XML数据 145 实例115 判断字符串中是否存在指定子串 146 2.9 正则表达式...

    PHP开发实战1200例(第1卷).(清华出版.潘凯华.刘中华).part2

    实例112 解决用substr()函数对中文字符串截取时出现乱码的问题 143 实例113 字符串与HTML标记相互转换 144 实例114 运用PHP 5.0新型字符串输出XML数据 145 实例115 判断字符串中是否存在指定子串 146 2.9 正则表达式...

    C#编程经验技巧宝典

    83 &lt;br&gt;0125 按要求生成指定位数编号 83 &lt;br&gt;0126 确定两字符串是否相等 84 &lt;br&gt;0127 判断两字符串中指定子串是否相等 84 &lt;br&gt;0128 判断字符串是否为日期格式 85 &lt;br&gt;0129 清除字符串中指定...

    JavaScript笔记

    获取日期格式的字符串 toString()、toLocaleTimeString()、toLocaleDateString()等 21.argument参数:所有方法都隐藏的一个数组对象 作用:不设置任何的形参的情况下,自动接收所有传入参数 arguments.length:...

    excel2007培训教程PPT.pptx

    1st 文本函数 LEFT(字符串,左起截取的位数) RIGHT(字符串,右起截取的位数) MID(字符串,开始截取的位置,载取的位数 TEXT(数值,数字格式代码) REPLACE(字符串,开始位置,替换个数,替换的字符) excel2007培训教程PPT...

Global site tag (gtag.js) - Google Analytics