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

我想将时间转换为hh:mm从hh:mm:ss它来自数据库(我的sql),forms为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("

"+ts+"

");

谢谢你的帮助。

您需要使用DateFormat#format()java.util.Date对象转换为表示所需格式的人类可读时间的java.lang.String对象。 您不能再将其转换回Date (或其任何子类,如java.sql.Time等),而不会丢失格式。 格式即不存储在DateDate仅知道自Epoch以来的毫秒数。

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

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

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

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

代码可能如下所示:

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

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

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

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

您应该使用DateFormat的格式方法。 就像是:

 out.println("

"+sdf.format(ts)+"

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

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

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

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