簡體   English   中英

在Java中將時間從hh:mm:ss轉換為hh:mm

[英]converting time from hh:mm:ss to hh:mm in java

我想將時間從hh:mm:ss轉換為hh:mm,它來自數據庫(我的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>");                       

謝謝你的幫助。

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

最好通過hhmmss.substring(0,5) ;-)將HH:MM:SS轉換為HH:MM;或者,您可能更喜歡直接在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的format方法。 就像是:

out.println("<h2>"+sdf.format(ts)+"</h2>"); 
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 參考 就您而言,應該是這樣的-

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

看起來您需要為從查詢中獲得的每一行進行轉換,並且如果您要檢索許多記錄,則由數據庫引擎完成轉換可能會更具成本效益。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM