解决fmt标签无法将时间格式化为英文格式的问题

SilenceSea 2017-07-11 阅读


我们都知道对于java web开发来说,fmt是一个很好的格式化工具,无论是格式化时间还是数字,使用都特别广泛,但是不知道大家有没有遇到这么个情况,用fmt格式化时间的时候,无法自定义时间语言格式,这个完全取决于客户端浏览器的语言设置,比如如果是浏览器语言为中文,无论如何设置格式化的pattern,你都无法输出类似 March 2017,或者May 2017这样的英文格式日期。

当然也有可能是有些技巧我没有发现,或者使用不当,不过我确定我多次查看API文档以及百度搜索,都没有发现比较好的答案,所以我选择自己处理了,处理方式自定义标签。

下面就给大家分享整个实现的过程:

1. 首先编写时间格式化的工具方法,建议写一个工具类,注意方法必须是静态方法,否则无法以标签的形式调用。方法如下:

 

    

    /**
     * @param pattern,目标格式如“MMM yyyy”,三位简写英文月份
     * @param sourceDate,日期如 “2017-07-01”
     * @param language,语言格式如“en”,默认cn
     * @return string 
     * @author shy
     * @date 2017-7-11 下午10:18:31
     */
     public static String convertDate2Str(String pattern,Date sourceDate,String language){
       if(sourceDate ==null) return "";
       if("en".equals(language)){
         return DateUtils.dateConvert2StrEn(pattern,sourceDate);
       }else{
         return DateUtils.dateConvert2Str(pattern,sourceDate);
       }
     }


2. 新建自定义标签,同时添加该方法。在WEB-INF目录下新建tld文件夹,新建shy.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">
   <tlib-version>1.0</tlib-version>
   <short-name>shy</short-name>
   <uri>http://www.axiaol.com</uri>    
   <!-- 格式化时间 -->
   <function>
        <!--EL页面调用名字-->
       <name>convertDate2Str</name>
          <!--指定标签的处理类,指定了标签由哪个Java类来处理。-->
        <function-class>com.rhhz.utils.StringUtils</function-class>
          <!--指定EL页面调用名字中实际调用的方法.指定处理类的实际方法.参数和回调函数要写完整路径-->
        <function-signature>
            java.lang.String convertDate2Str(java.lang.String,java.util.Date,java.lang.String)
        </function-signature>
    </function>
</taglib>


 

3. 在页面引入此标签,然后通过EL表达式调用。

<%@ taglib uri="/WEB-INF/tld/shy.tld" prefix="shy" %>
${shy:convertDate2Str("MMM yyyy",today,"en")}


调用方式其实很简单和普通的c标签,fmt标签都是一样的。

 

4. 访问页面输出结果。

May 2017

 

5. 补充说明:

其实本文重点不仅仅是为了实现时间格式化为英文,另一方面,大家也可以参考一下,如何实现自定义标签,扩充更多的方法。如有问题,可以直接回复本文。

 


声明

本文内容仅代表作者观点,或转载于其他网站,本站不以此文作为商业用途
如有涉及侵权,请联系本站进行删除
转载本站原创文章,请注明来源及作者。