在JSP中转换和格式化date

从我的JSP页面,我得到这种格式的Date

2011年5月13日星期五19:59:09 GMT 0530(印度标准时间)

我怎样才能将其转换为模式yyyy-MM-dd HH:mm:ss

你可以使用SimpleDateFormat类来做到这一点。

 SimpleDateFormat formatter=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); String dates=formatter.format(mydate); //mydate is your date object 

在JSP中,您通常喜欢使用JSTL <fmt:formatDate> 。 你当然也可以使用SimpleDateFormat一个scriptlet ,但是从2003年开始, scriptlet就被强烈地拒​​绝了 。

假设${bean.date}返回java.util.Date ,下面介绍如何使用它:

 <%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %> ... <fmt:formatDate value="${bean.date}" pattern="yyyy-MM-dd HH:mm:ss" /> 

如果实际使用java.util.Calendar ,则可以调用其getTime()方法来获取<fmt:formatDate>接受的java.util.Date

 <fmt:formatDate value="${bean.calendar.time}" pattern="yyyy-MM-dd HH:mm:ss" /> 

或者,如果实际上在java.lang.String保存date(这表示模型中存在严重的devise错误;您应该修复模型以将date存储为java.util.Date而不是java.lang.String !),这里是如何从一个datestring格式,例如MM/dd/yyyy为另一个datestring格式,例如yyyy-MM-dd ,借助于JSTL <fmt:parseDate>

 <fmt:parseDate pattern="MM/dd/yyyy" value="${bean.dateString}" var="parsedDate" /> <fmt:formatDate value="${parsedDate}" pattern="yyyy-MM-dd" /> 
 <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html> <html dir="ltr" lang="en-US"> <head> <meta charset="UTF-8" /> <title>JSP with the current date</title> </head> <body> <%java.text.DateFormat df = new java.text.SimpleDateFormat("dd/MM/yyyy"); %> <h1>Current Date: <%= df.format(new java.util.Date()) %> </h1> </body> </html> 

输出:当前date:10/03/2010

 Date td = new Date(); String b = new String(""); SimpleDateFormat format = new SimpleDateFormat("YYYY/MM/dd"); b = format.format(td); out.println(b); 

签出DateFormatter 。 我可能可以做你想做的。

上面的示例显示导入与… sun.com/jsp/jstl/format是不正确的(这意味着它不适用于我)。

而是尝试下面这个导入语句是有效的

 <%@ taglib uri="http://java.sun.com/jstl/core" prefix="c" %><%@ taglib uri="http://java.sun.com/jstl/core-rt" prefix="c-rt" %><%@ taglib uri="http://java.sun.com/jstl/fmt" prefix="fmt" %> <html> <head> <title>Format Date</title> </head> <body> <c-rt:set var="now" value="<%=new java.util.Date()%>" /> <table border="1" cellpadding="0" cellspacing="0" style="border-collapse: collapse" bordercolor="#111111" width="63%" id="AutoNumber2"> <tr> <td width="100%" colspan="2" bgcolor="#0000FF"> <p align="center"> <b> <font color="#FFFFFF" size="4">Formatting: <fmt:formatDate value="${now}" type="both" timeStyle="long" dateStyle="long" /> </font> </b> </p> </td> </tr> 
 <%@page import="java.text.SimpleDateFormat"%> <%@page import="java.util.Date"%> <%@page import="java.util.Locale"%> <html> <head> <title>Date Format</title> </head> <body> <% String stringDate = "Fri May 13 2011 19:59:09 GMT 0530"; Date stringDate1 = new SimpleDateFormat("EEE MMM dd yyyy HH:mm:ss Z", Locale.ENGLISH).parse(stringDate); String stringDate2 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(stringDate1); out.println(stringDate2); %> </body> </html>