2010-06-01 76 views
1

我想將時間從hh:mm轉換爲hh:mm:mm: 它來自hh:mm:ss形式的數據庫。 我試過下面的代碼,但我沒有得到我想要的。將時間從hh:mm:ss轉換爲hh:mm in java

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>");      

感謝您的幫助。

+0

你得到了什麼答案?你應該收到什麼答案? – Kevin 2010-06-01 12:29:59

+0

您在這段代碼中缺少了很多括號 - 請格式正確。 – 2016-03-03 12:09:45

回答

6

您需要將java.util.Date對象轉換爲java.lang.String對象,該對象使用DateFormat#format()代表所需格式的人類可讀時間。您不能將其重新轉換回Date(或其任何子類如java.sql.Time等),而不會丟失格式。格式不存儲在Date中。 Date只知道自Epoch以來的毫秒量。

SimpleDateFormat sdf = new SimpleDateFormat("HH:mm"); 
java.util.Date date = object.getTimeFrom(); 
String string = sdf.format(date); 
System.out.println(string); 
+0

優先解決方案和最簡單的解決方案。 謝謝 – kawtousse 2010-06-01 14:08:16

0

也許您可以在Dailytimesheet中添加一個名爲getTimeWithoutSecondsFrom()的新方法,它複製日期對象,然後在返回日期之前將副本的秒數設置爲零。

作爲一個額外的好處,你可以完全避免SimpleDateFormat SDF位,然後代碼將更容易閱讀。

的代碼可能是這樣的:關於嘗試java.util.Calendar類

public Date getTimeWithoutSecondsFrom() 
{ 
    Date result = this.getTimeFrom(); 
    result.setSeconds(0); 
    return(result); 
} 
0

什麼? 你可以這樣做:

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

或者我沒有得到你的問題?

0

您應該使用DateFormat的格式方法。喜歡的東西:

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

轉換HH:MM:SS以HH:MM最好用hhmmss.substring(0,5)做;-)或者,你可能更喜歡直接在SELECT語句的數據格式。

+0

+1最實用的解決方案 – stacker 2010-06-01 13:26:03

0
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

我只想做在這種情況下,SQL轉換。這是MySql reference轉換日期。在你的情況下,它應該是這樣的 -

Blockquote DATE_FORMAT('2007-10-04 22:23:00','%H:%i');

它看起來像你需要做你從查詢得到的每一行的轉換,它可能是有效的把它由數據庫引擎做,如果您檢索多條記錄更多的成本。

相關問題