使用fmt:formatDate格式化日期
时间:2018-11-15 12:57:31 来源:igfitidea点击:
日期和时间在国际化web应用程序中非常重要。
不同的国家都有自己表示日期和时间的格式
JSTL提供了有一个名为<fmt:formatDate>的操作,来根据指定的地区对日期和时间进行格式化。
下面是<fmt:formatDate>操作的属性表:
| 名称 | 必须 | 说明 |
|---|---|---|
| value | yes | 要格式化的日期或时间值。 |
| type | no | 日期和时间是否用于格式化 |
| dateStyle | no | 仅当日期值用于格式化时,为日期指定预定义的格式化样式。 |
| timeStyle | no | 仅当时间值用于格式化时,为时间指定预定义的格式化样式。 |
| pattern | no | 指定格式化日期和/或时间的标准自定义模式 |
| timeZone | no | 如果时间值用于格式化,则此属性指定该时间值的时区。 |
| var | no | 此属性用于导出作用域变量,该变量将格式化的日期和/或时间存储为字符串 |
| scope | no | 指定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,time和both。
格式化并显示时间示例
<%@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属性用于使用自定义样式。timeStyle和dateStyle属性用于指定要使用的预定义样式。
样式使用到的代码编码表:
| 编码 | 说明 |
|---|---|
| G | 时代(公元, 公元前,等等) |
| y | 年份(两位数年份yy,四位数年份yyyy) |
| M | 月份(数字月份使用,月份名称或缩写使用MMM或更长) |
| w | 一年中的一周(ww为两位数) |
| W | 一个月中的那一周 |
| D | 年中的某一天(DDD为三位数) |
| d | 每月的第一天(两位数使用dd) |
| F | 一周中的数字日 |
| E | 一周中的某一天(全名使用EEEE或更长) |
| a | AM / 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 | 完整的时区名称 |
| Z | RFC 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
