在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
等),而不会丢失格式。 格式即不存储在Date
。 Date
仅知道自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’);
看起来您需要为从查询中获得的每一行进行转换,如果要检索许多记录,则由数据库引擎完成转换可能更具成本效益。