2013-06-24 3 views
2

В моем приложении Java я использую Mysql, и он возвращает дату в формате как yyyy-MM-dd hh:mm:ss. Хотя мне это нужно в формате dd-MM-yyyy hh:mm a. Преобразование происходит в классе Hibernate VO.Как преобразовать дату в формате SimpleDate?

Для этого я делаю так:

@Temporal(TemporalType.TIMESTAMP) 
@Column(name = "CREATED_DATE") 
private Date createdDate = new Date(); 

public Date getCreatedDate() { 
    Date date = null; 
    try { 
     date = new SimpleDateFormat("dd/MM/yyyy hh-mm a") 
       .parse(new SimpleDateFormat("yyyy-MM-dd hh:mm:ss").format(createdDate)); 
    } catch (ParseException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } 
    return date; 
} 

public void setCreatedDate(Date createdDate) { 
    this.createdDate = createdDate; 
} 

Но это не дает исключение Синтаксическому.

java.text.ParseException: Unparseable date: "2013-05-06 01:39:00" 
    at java.text.DateFormat.parse(DateFormat.java:354) 
    at com.sits.ec.valueObjects.MessageBoxVO.getCreatedDate(MessageBoxVO.java:64) 

Может ли кто-нибудь дать мне совет?

ответ

0

Во-первых, почему вы отформатировали дату и проанализировали ее снова, чтобы вернуть объект даты? Вы можете напрямую использовать объект фактической даты как таковой.

Во-вторых, вы форматируете дату с помощью format1, а затем пытаетесь проанализировать это с помощью format2, что не совпадает с format1. Следовательно, ParseException.

Это то, что вам нужно.

public Date getCreatedDate() { 
    return createdDate; 
} 
+0

если мы непосредственно вернуть объект createDate он собирается же как ..yyyy-MM-dd hh: mm: ss format, но я хочу 'dd/MM/yyyy hh-mm a' этот формат – java

+0

'Date' не имеет форматирования. Вы можете получить представление 'String' только в том формате, который вам нужен. Вы либо получаете 'String' в нужном вам формате, либо получаете объект Date. – SudoRahul

+0

'Date to Date' - абсолютно бессмысленно, так как вы можете форматировать объект' Date'. Вы можете получить представление 'String' этого объекта' Date' в формате, который вам нужен! – SudoRahul

1

Попробуйте с:

import java.util.*; 
import java.text.*; 

public class Example { 
    public static void main(String[] args) { 
     Date now = new Date(); 
     SimpleDateFormat format = new SimpleDateFormat("dd-MM-yyyy hh:mm a") 
     String s = df.format(now); 
     System.out.println("Today is: " + s); 
    } 
} 
+0

это простая конвертация даты в строку, но я хочу, чтобы дата до даты, но мой собственный формат ... – java

+0

@java Объект Date не указывает формат, он хранит только количество времени в длинной переменной. Это часть клиента, которая собирается визуализировать эту дату для определения формата. – maqjav

0

Потому что вы пытаетесь разобрать строковое представление yyyy-MM-dd hh:mm:ss формат даты в этот формат dd/MM/yyyy hh-mm a даты. Как вы ожидаете, что это сработает?

Представление должно соответствовать.

0

Попробуйте только
String dateString = new SimpleDateFormat("dd-MM-yyyy hh:mm a").format(createdDate);
Там нет ничего нужнее.

0

return createdDate; - это все, что вам нужно.

Там нет смысла в форматировании Date объекта в String, а затем разобрать, что String назад к Date объекта.

Btw это сработает, если вы использовали тот же шаблон формата для операции синтаксического анализа и форматирования.

Update: Если вы хотите даты как отформатированную строку вы можете использовать это:

public String getCreatedDateAsString() { 
    return new SimpleDateFormat("dd-MM-yyyy hh:mm a").format(createdDate); 
} 

java.util.Date просто представляет один миллисекунду во времени с момента 1.1.1980 GMT и абсолютно ничего не знает о форматах времени и тому подобное ,

+0

, но как получить этот формат «dd-MM-yyyy hh: mm a» – java

+0

@java обновил мой ответ –

+0

Его метод toString делает дату в некотором формате (не очень релевантно, но делает ваше утверждение не буквально истинным) , –

1

Это то, что в корне не соответствует вашему коду: оно принимает Date и ретарты Date. Date не имеет ничего общего со строками, он представляет собой абсолютный момент времени. Если вы, по крайней мере, получили внешний API, мы можем предложить реализацию.

+0

Да, я хочу, чтобы дата до даты, но первая дата была в другом формате, а вторая дата была в другом формате .. – java

+1

Как я уже указывал, 'Date' не имеет никакого формата, это оболочка вокруг значения' long', которое вы можно получить из 'System.currentTimeMillis()'. Ваш запрос равносилен запросу «int», который имеет такое же значение, но в «другом формате». –

1

Попробуйте это:

String time=new SimpleDateFormat("yyyy.MM.dd").format(Calendar.getInstance().getTime()); 
Смежные вопросы