使用fmt:formatDate格式化日期

时间:2018-11-15 12:57:31  来源:igfitidea点击:

日期和时间在国际化web应用程序中非常重要。
不同的国家都有自己表示日期和时间的格式

JSTL提供了有一个名为<fmt:formatDate>的操作,来根据指定的地区对日期和时间进行格式化。

下面是<fmt:formatDate>操作的属性表:

名称必须说明
valueyes要格式化的日期或时间值。
typeno日期和时间是否用于格式化
dateStyleno仅当日期值用于格式化时,为日期指定预定义的格式化样式。
timeStyleno仅当时间值用于格式化时,为时间指定预定义的格式化样式。
patternno指定格式化日期和/或时间的标准自定义模式
timeZoneno如果时间值用于格式化,则此属性指定该时间值的时区。
varno此属性用于导出作用域变量,该变量将格式化的日期和/或时间存储为字符串
scopeno指定var的作用域。

使用<fmt:formatDate>操作在不同地区格式化日期示例

<%@page contentType="text/html" pageEncoding="UTF-8"%>
<%@taglib uri="http://java.sun.com/jsp/jstl/core"
          prefix="c" %>
<%@taglib uri="http://java.sun.com/jsp/jstl/fmt"
          prefix="fmt" %>
 
<html>
    <head>
        <title>格式化日期</title>
    </head>
    <body>
        <jsp:useBean id="now" class="java.util.Date" />
        <p> 在美国的日期格式
            <fmt:setLocale value="en_US" />
            <fmt:formatDate value="${now}" />
        </p>
        <p> 在中国的日期格式
            <fmt:setLocale value="zh_CN" />
            <fmt:formatDate value="${now}"/>
        </p>
 
    </body>
</html>

输出:

在美国的日期格式 Nov 26, 2018
在中国的日期格式 2018-11-26

格式化日期或时间

默认情况下,<fmt:formatDate>只对日期进行格式化并显示。
如果也想显示时间,那么需要使用type这个属性。

属性type有3个值:date,timeboth

格式化并显示时间示例

<%@page contentType="text/html" pageEncoding="UTF-8"%>
<%@taglib uri="http://java.sun.com/jsp/jstl/core"
          prefix="c" %>
<%@taglib uri="http://java.sun.com/jsp/jstl/fmt"
          prefix="fmt" %>
<html>
    <head>
        <title>格式化日期和时间</title>
    </head>
    <body>
        <jsp:useBean id="now" class="java.util.Date" />
        <p> 日期
            <fmt:formatDate value="${now}" type="date" />
        </p>
        <p> 时间
            <fmt:formatDate value="${now}" type="time" />
        </p>
        <p> 日期和时间
            <fmt:formatDate value="${now}" type="both" />
        </p>
    </body>
</html>

输出:

日期 2018-11-26

时间 10:35:18

日期和时间 2018-11-26 10:35:18

设置日期和时间的格式

在格式化以及显示日期和时间时,还可以自定义它们的样式。

<fmt:formatdate>patterns属性用于使用自定义样式。
timeStyledateStyle属性用于指定要使用的预定义样式。

样式使用到的代码编码表:

编码说明
G时代(公元, 公元前,等等)
y年份(两位数年份yy,四位数年份yyyy)
M月份(数字月份使用,月份名称或缩写使用MMM或更长)
w一年中的一周(ww为两位数)
W一个月中的那一周
D年中的某一天(DDD为三位数)
d每月的第一天(两位数使用dd)
F一周中的数字日
E一周中的某一天(全名使用EEEE或更长)
aAM / PM 指示器(指示上午下午)
H小时数(0-23)
k小时数(1-24)
K小时 a.m或小时 p.m.(0-11)
h小时 a.m或小时 p.m.(1-12)
m分钟
s
S毫秒
z完整的时区名称
ZRFC 822时区(例如,0500)

使用自定义时间格式示例

<%@page contentType="text/html" pageEncoding="UTF-8"%>
<%@taglib uri="http://java.sun.com/jsp/jstl/core"
          prefix="c" %>
<%@taglib uri="http://java.sun.com/jsp/jstl/fmt"
          prefix="fmt" %>
<html>
    <head>
        <title>格式化日期和时间</title>
    </head>
    <body>
        <jsp:useBean id="now" class="java.util.Date" />
        <p> 短时间格式:
            <fmt:formatDate value ="${now}"
                type="both"
                timeStyle="short"
                dateStyle="full" />
        </p>
        <p> 长时间格式:
            <fmt:formatDate value ="${now}"
                type="time"
                timeStyle="long"
                />
        </p>
        <p> 自定义时间格式:
            <fmt:formatDate value ="${now}"
                pattern="EEEE hh:mm a"
                />
        </p>
        <p> 自定义时间格式 年月日分时秒:
            <fmt:formatDate value ="${now}"
                pattern="yyyy-MM-dd HH:mm:ss"
                />
        </p>
    </body>
</html>

输出:

短时间格式: 2018年11月26日 星期二 上午12:51

长时间格式: 上午12时51分46秒

自定义时间格式: 星期二 12:51 上午

自定义时间格式 年月日分时秒: 2018-11-26 00:51:46