Преобразование и форматирование даты в 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
вместо asjava.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>