在hh中将时间从hh:mm:ss转换为hh:mm

时间:2010-06-01 12:26:13

标签: java date formatting

我想将时间转换为hh:mm,hh:mm:ss 它来自数据库(我的sql),形式为hh:mm:ss。 我尝试了以下代码,但我没有得到我想要的东西。

 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 个答案:

答案 0 :(得分:7)

您需要使用DateFormat#format()java.util.Date对象转换为表示所需格式的人类可读时间的java.lang.String对象。您不能再将其转换回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);

答案 1 :(得分:4)

将HH:MM:SS转换为HH:MM最好由hhmmss.substring(0,5)完成;-)或者,您可能更愿意在SELECT语句中格式化数据。

答案 2 :(得分:0)

也许您可以在Dailytimesheet中添加一个名为getTimeWithoutSecondsFrom()的新方法,该方法复制日期对象,然后在返回日期之前将副本的秒数设置为零。

作为一个额外的好处,您可以完全避开SimpleDateFormat sdf位,代码将更容易阅读。

代码可能如下所示:

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

答案 3 :(得分:0)

尝试java.util.Calendar类怎么样? 你可以这样做:

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

或者我没有得到你的问题?

答案 4 :(得分:0)

您应该使用DateFormat的格式方法。类似的东西:

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

答案 5 :(得分: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();
}

答案 6 :(得分:0)

在这种情况下,我只会在SQL中进行转换。这是日期转换时的MySql reference。在你的情况下,它应该是这样的 -

  

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

看起来您需要为从查询中获得的每一行进行转换,如果要检索许多记录,则由数据库引擎完成此操作可能更具成本效益。