2015-02-13 9 views
0

Нужно сообщить, как отправить java.sql.Date (YYYY-MM-DD) в java. util.Date (DD-MMM-YYYY).java.sql.Date (YYYY-MM-DD) для преобразования java.util.Date (DD-MMM-YYYY)

Класс java.sql.Date предназначен для переноса только даты. У меня есть таблица с столбцом EXPIRY_DATE как тип данных DATE.

Когда я следующий

rs.getDate("EXPIRY_DATE") 

это дает выход в формате YYYY-MM-DD. Например, 2015-04-05

У меня есть следующие Java Bean

class ABC { 
    java.util.Date expiryDate; 
} 

Я хочу вернуть вышеуказанную боб, как это на просмотр страницы JSP в качестве объекта JSON. Как мы используем Spring REST Controller (@RestController Service), я написал следующую строку,

@RestController 
@RequestMapping("/url") 
class someClass { 

@RequestMapping("/url") 
Object someWebServiceMethod() { 
    ABC object = new ABC(); 
    object.setExpiryDate(resultSet.getDate("EXPIRY_DATE")); 
    return object; 
    } 
} 

Мой вебсервис возвращает дату, как в формате java.sql.Date как YYYY-MM-DD.

Я хочу отправить выход в формате DD-MMM-YYYY на просмотр страницы JSP.

Как это сделать?

Я попытался следующий код,

Примечание: ниже код не имеет никакого отношения к моему вопросу выше. Мне нужно решение только для выше @RestController яровой кода

public static void convertDate() { 
    String input = "2013-09-14"; 
    // DateFormat format = DateFormat.getInstance(); 
    SimpleDateFormat format1 = new SimpleDateFormat("yyyy-mm-dd"); 
    SimpleDateFormat format2 = new SimpleDateFormat("dd-MMM-yy"); 
    Date date; 
    try { 
     date = format1.parse(input); 
     String temp = format2.format(date); 
     Date outDate = format2.parse(temp); 
     System.out.println(outDate); 
    } catch (ParseException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } 
} 

Но это дает выход в Пн янв 14 00:00:00 IST 2013

Я хочу, чтобы отправить дату, в формат dd-MMM-YYYY, как 28-фев-2015

В настоящее время мой код @RestController возвращает формат java.sql.Date, например 2015-02-28. Но я хочу быть 28 февраля 2015 года.

Пожалуйста, посоветуйте, как сделать java.sql.Date (YYYY-MM-DD) в java.util.Date (DD-MMM-YYYY) преобразование

Благодаря

+0

FYI, хлопотно старые классы даты и времени таких как ['java.util.Date'] (https://docs.oracle.com/javase/8/docs/api/java/util/Da te.html), ['java.util.Calendar'] (https://docs.oracle.com/javase/8/docs/api/java/util/Calendar.html) и' java.text.SimpleDateFormat' теперь [legacy] (https://en.wikipedia.org/wiki/Legacy_system), вытесненный [java.time] (https://docs.oracle.com/javase/8/docs/api/java/ time/package-summary.html). См. [Учебное пособие по Oracle] (https://docs.oracle.com/javase/tutorial/datetime/TOC.html). –

ответ

0

Это потому, что вы повторно просматриваете дату после форматирования.

date = format1.parse(input); 
String temp = format2.format(date); 
Date outDate = format2.parse(temp); 
System.out.println(outDate); 

Просто сделать

date = format1.parse(input); 
String temp = format2.format(date); 
System.out.println(temp) 

Обратите внимание, что если у вас есть JSTL вы можете форматировать direcytly на странице:

<%@taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt"%> 
<fmt:formatDate value="${bean.date}" pattern="dd-MMM-yy" /> 
+0

Извините за запоздалый ответ. Да, вышеупомянутые предложения помогли мне. :-) Спасибо!! –

+0

Я конвертировал в конце JSP с помощью taglib. –

+0

@SaravananSivaji Добро пожаловать :) –

1

Я хочу отправить выход в формате DD-MMM-YYYY для просмотра страницы JSP.

Для этого вам необходимо использовать SimpleDateFormat. В настоящее время вы используете результат Date.toString() и игнорируете temp, который должен иметь правильный результат.

Однако, вам не нужно, чтобы разбореjava.sql.Date на всех - вы можете просто передать его прямо в DateFormat.format:

java.sql.Date date = /* get date from database */; 
// TODO: Specify time zone and locale 
SimpleDateFormat format = new SimpleDateFormat("dd-MMM-yyyy"); 
String formattedDate = format.format(date); 

Кроме того, я подозреваю, что JSP уже есть механизм, позволяющий вам передайте дату прямо на сам JSP и укажите формат вывода там ... это действительно преобразование для перемещения как можно ближе к уровню презентации.

+0

Спасибо за ваш быстрый ответ. Из вашего кода я не должен возвращать formattedDate как String. Согласно вашему коду, formattedDate должен быть java.util.Date. Пожалуйста, посмотрите мою декларацию. Я объявил свой атрибут как java.util.Date expiryDate; –

+1

@SaravananSivaji: Тогда вам нужно принять, что значение 'Date' не имеет * * формат. Это всего лишь момент времени. Нет такой вещи, как «Дата в формате DD-MMM-YY». Крайне важно, чтобы вы понимали разницу между объектом 'Date' и некоторым строковым представлением его - вы в настоящее время говорите, что есть проблема с строковым представлением, но вы не будете возвращать строковое представление, только' Значение Date'. Эти два утверждения противоречивы. –

+0

my convertDate() - это всего лишь пример образца, который пробовал отдельно. Как вы сказали, я не разбирал свой java.sql.Date. Я просто назначаю его как object.setExpiryDate (resultSet.getDate ("EXPIRY_DATE")); Посмотрите мой весенний код @RestController. –

Смежные вопросы