Преобразование и форматирование даты в JSP
С моей страницы JSP, я получаю Date
в этом формате.
пт 13 мая 2011 19:59: 09 GMT 0530 (Индия стандартное время)
Как я могу преобразовать это в шаблон yyyy-MM-dd HH:mm:ss
?
7 ответов
Вы можете сделать это с помощью 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
, а сценарии are приветствуется С 2003 года.
предполагая, что ${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()
метод получить java.util.Date
из этого, что <fmt:formatDate>
можно:
<fmt:formatDate value="${bean.calendar.time}" pattern="yyyy-MM-dd HH:mm:ss" />
или, если вы действительно держите дату в java.lang.String
(это указывает на серьезную ошибку дизайна в модели; вы действительно должны исправить свою модель для хранения дат как java.util.Date
вместо as java.lang.String
!), вот как вы можете конвертировать из одного формата строки даты, например MM/dd/yyyy
в другой формат строки даты, например 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>
Выход: Текущая Дата: 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>