【问题标题】:converting time from hh:mm:ss to hh:mm in java在java中将时间从hh:mm:ss转换为hh:mm
【发布时间】:2010-06-01 12:26:13
【问题描述】:

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

感谢您的帮助。

【问题讨论】:

  • 你得到了什么答案?您应该收到什么答案?
  • 您在这个 sn-p 中缺少很多括号 - 请正确格式化。

标签: java date formatting


【解决方案1】:

您需要使用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);

【讨论】:

    【解决方案2】:

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

    【讨论】:

      【解决方案3】:

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

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

      代码可能如下所示:

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

      【讨论】:

        【解决方案4】:

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

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

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

        【讨论】:

          【解决方案5】:

          您应该使用DateFormat 的格式方法。比如:

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

          【讨论】:

            【解决方案6】:
            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();
            }
            

            【讨论】:

              【解决方案7】:

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

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

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

              【讨论】:

                猜你喜欢
                • 1970-01-01
                • 2018-07-04
                • 2012-01-05
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 2021-09-06
                • 1970-01-01
                相关资源
                最近更新 更多