время преобразования из чч: мм: сс в чч: мм в java - PullRequest
1 голос
/ 01 июня 2010

Я хочу преобразовать время в чч: мм из чч: мм: сс это происходит из базы данных (мой sql) в виде чч: мм: сс. Я попробовал следующий код, но я не получил то, что хочу.

 try {

        s= HibernateUtil.currentSession();
        tx=s.beginTransaction();
        Query query = s.createQuery("select from Dailytimesheet dailytimesheet where dailytimesheet.IdDailyTimeSheet=6083 " );         

             for(Iterator it=query.iterate();it.hasNext();)
             {                                                                           
                               if(it.hasNext())
                               {

                                   Dailytimesheet object=(Dailytimesheet)it.next();
                                   String dt=object.getTimeFrom().toString();
                                   SimpleDateFormat sdf = new SimpleDateFormat("HH:mm");  
                                   long ms=0;
                            try {
                                ms = sdf.parse(dt).getTime();
                                } 
                            catch (ParseException e) {e.printStackTrace();}
                                Time ts = new Time(ms);


         out.println("<h2>"+ts+"</h2>");                       

спасибо за вашу помощь.

Ответы [ 7 ]

7 голосов
/ 01 июня 2010

Вам необходимо преобразовать объект java.util.Date в объект java.lang.String, представляющий удобочитаемое время в желаемом формате, используя DateFormat#format(). Вы не можете снова преобразовать его в Date (или любой из его подклассов, таких как java.sql.Time и т. Д.) Без потери формата. Формат не хранится в Date. Date знает только количество миллисекунд с начала эпохи.

SimpleDateFormat sdf = new SimpleDateFormat("HH:mm");
java.util.Date date = object.getTimeFrom();
String string = sdf.format(date);
System.out.println(string);
4 голосов
/ 01 июня 2010

Преобразование ЧЧ: ММ: СС в ЧЧ: ММ лучше всего сделать с помощью hhmmss.substring(0,5) ;-) В качестве альтернативы, вы можете отформатировать данные прямо в операторе SELECT.

0 голосов
/ 01 июня 2010

Я бы просто сделал преобразование в SQL в этом случае. Вот MySql ссылка на преобразование даты. В вашем случае это должно быть примерно так -

Цитата DATE_FORMAT ('2007-10-04 22:23:00', '% H:% i');

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

0 голосов
/ 01 июня 2010
try {
    String strDate = object.getTimeFrom().toString(); 
    SimpleDateFormat sdf1 = new SimpleDateFormat("HH:mm:ss");
    SimpleDateFormat sdf2 = new SimpleDateFormat("HH:mm");
    Date date = sdf1.parse(strDate);
    System.out.println(sdf2.format(date));
} catch (ParseException e) {
    e.printStackTrace();
}
0 голосов
/ 01 июня 2010

Вы должны использовать метод формата DateFormat. Что-то вроде:

out.println("<h2>"+sdf.format(ts)+"</h2>"); 
0 голосов
/ 01 июня 2010

А как насчет использования класса java.util.Calendar? Вы могли бы сделать что-то вроде этого:

Calendar c = new Calendar();
Calendar.setDate(new Date(object.getTimeFrom().toString()));
String date = Calendar.HOUR + ":" + Calendar.MINUTE

Или я не получаю ваш вопрос?

0 голосов
/ 01 июня 2010

Возможно, вы могли бы добавить новый метод в Dailytimesheet с именем getTimeWithoutSecondsFrom (), который копирует объект даты, а затем устанавливает нулевые секунды копии перед возвратом даты.

В качестве дополнительного преимущества вы можете полностью отказаться от sdf-кода SimpleDateFormat, и код будет легче читать.

Код может выглядеть так:

public Date getTimeWithoutSecondsFrom()
{
    Date result = this.getTimeFrom();
    result.setSeconds(0);
    return(result);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...