2010-06-01 66 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');

它看起来像你需要做你从查询得到的每一行的转换,它可能是有效的把它由数据库引擎做,如果您检索多条记录更多的成本。

相关问题