`
高军威
  • 浏览: 181072 次
  • 性别: 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;
    }

}
分享到:
评论

相关推荐

    Js获取当前日期时间及格式化代码

    - 示例代码中展示了如何通过替换字符串来格式化日期时间,例如将年份替换为四位数年份,月份替换为两位数表示,星期天替换为汉字表示等。 - 其他日期时间脚本库方法包括日期计算、日期比较、日期转字符串、日期...

    JSTL 字符串处理函数

    截取字符串的一部分。可以指定起始位置和长度。例如: ```jsp ${fn:substring('Hello World', 0, 5)} &lt;!-- 输出:Hello --&gt; ``` 5. **fn:substringAfter** 返回在指定字符后的字符串部分。如: ```jsp ${fn:...

    js时间戳格式化成日期格式的多种方法介绍

    在JavaScript中,掌握如何将时间戳转换为格式化的日期字符串,是进行日期时间操作的基础技能之一。 最后,文章的结尾鼓励读者多参考这些方法,并表达了对读者支持的期待。对于开发者来说,了解和掌握多种时间戳转换...

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

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

    JSTL标签所需要的tld文件

    - `&lt;fmt:parseDate&gt;`:解析日期字符串。 - `&lt;fmt:formatNumber&gt;`:格式化数字,可以指定精度、货币格式等。 - `&lt;fmt:parseNumber&gt;`:解析数字字符串。 - `&lt;fmt:message&gt;`:获取国际化消息。 - `&lt;fmt:bundle&gt;`:管理...

    nariit-sgcc-common-1.0_JAVA通用工具类_sgcc_

    "nariit-sgcc-common-1.0"库可能包含了一些简化的时间操作方法,比如快速格式化日期、解析日期字符串、计算时间差等,使得开发者能更便捷地进行日期和时间的处理,提高开发效率。例如,它可能提供了一个`...

    JSTL标签 详细易懂

    3. ** fmt** - 国际化和格式化标签库:用于日期、时间、数字的格式化以及本地化资源的处理。 4. **SQL** - SQL标签库:简化了数据库操作,如执行SQL查询、处理结果集等。 5. **JSTL Functions** - 函数库:提供了一...

    如何去除富文本中的html标签及vue、react、微信小程序中的过滤器

    对于字符串的截取,有时需要对去除标签和空格后的文本进行长度限制,并在文本末尾添加省略号以提示用户内容被截断。可以通过编写一个函数来完成这个任务。 截取字符串并添加省略号的函数示例: ```javascript ...

    浅析51个PHP处理字符串的函数

    29. `sprintf()`:类似于`printf()`,但返回的是格式化后的字符串,而不是直接输出。 30. `strchr()`(等同于`strstr()`):找到字符串中第一次出现的子字符串,并返回该子字符串及其后续部分。 31. `strcmp()`:...

    jstl标签.rar

    `&lt;fn:length&gt;` 计算字符串或集合的长度,`&lt;fn:substring&gt;` 截取字符串的一部分,`&lt;fn:split&gt;` 将字符串分割成数组。 4. Sql库:对于需要进行数据库操作的场景,JSTL的sql库提供了执行SQL查询、处理结果集等功能。`...

    jstl1.2标签库jar包

    - `fn:substring`, `fn:substringAfter`, `fn:substringBefore`:字符串截取。 - **sql标签库** - `sql:query`:执行SQL查询。 - `sql:update`:执行SQL更新。 - `sql:transaction`:管理SQL事务。 **使用JSTL...

    jstl标签,c.tld,fn.tld,fmt.tld

    - `fn:substring()`:截取字符串。 - `fn:trim()`:去除字符串两端的空白字符。 - `fn:toUpperCase()` 和 `fn:toLowerCase()`:转换字符串为大写或小写。 - `fn:escapeXml()`:转义XML特殊字符。 在实际应用中...

    jstl标签实例下载

    - `&lt;fmt:formatDate&gt;` 和 `&lt;fmt:formatNumber&gt;`:格式化日期和数字。 4. **XML处理标签库(XML Tags)**:用于XML文档的解析、操作和转换。例如: - `&lt;x:parse&gt;`:解析XML字符串。 - `&lt;x:out&gt;`:输出XML数据。 ...

    JSTL

    `JSTL_fmt格式化标签库.txt`可能涵盖了日期、时间和数字格式化的标签: - `&lt;fmt:formatDate&gt;`:格式化日期和时间。 - `&lt;fmt:formatNumber&gt;`:格式化数字,如货币、百分比等。 - `&lt;fmt:message&gt;`:获取本地化的消息,...

    Kettle_js脚本_示例

    该函数返回一个格式化的日期字符串。 **2. escapeStr1** **3. unEscapeHtml** 这两个函数用于对字符串进行HTML实体编码与解码。`escapeStr1`可能是一个笔误,正确的函数名应为`escapeHtml`。这些函数在处理可能...

Global site tag (gtag.js) - Google Analytics