2010-09-16 2 views
1

Я хочу изменить формат даты yyyy-mm-dd hh: mm: ss.SSS (который хранится в базе данных в строковом формате) до mm/dd/yyyy для их сравненияДата Разбор из одного формата в другой формат

while(rs.next()) 
    { 
     reportBean bean=new reportBean(); 

     String proj_close_date=rs.getString(3); 
     String added_on=rs.getString(4); 

     DateFormat myDateFormat = new SimpleDateFormat("MM/dd/yyyy"); 

     DateFormat myDateFormat1= new SimpleDateFormat("yyyy-mm-dd hh:mm:ss.SSSSSS"); 

     Date myDate1 = null;  
     Date myDate2 = null; 
     Date myDate3 = null; 
     Date myDate4 = null; 
     Date myDate5 = null; 
     try 
     { 
      if(proj_close_date==null || proj_close_date.trim().equals("")) 
      { 
       System.out.println("\n ****** In IF Loop "); 
       bean.setCust_code(rs.getString("customer_code")); 
       bean.setProject_code(rs.getString("project_code")); 
       list.add(bean); 
      } 
      else 
      { 
       System.out.println("\n ****** In Else Loop "); 
       myDate1 = myDateFormat.parse(proj_close_date); 
       myDate2 = myDateFormat.parse(frm_date); 
       myDate3 = myDateFormat.parse(to_date); 
       myDate5 = myDateFormat1.parse(added_on);       
       myDate4 = myDateFormat.format(myDate5); 

       System.out.println("Project Code ---->"+rs.getString(2));           
       System.out.println("Proj_close_date ------>"+myDate1); 
       System.out.println("From Date ---->"+myDate2); 
       System.out.println("to Date ---->"+myDate3); 
       System.out.println("Added_on --->"+myDate4); 
       System.out.println("Added_on 1 ie Date 5 ---->"+myDate5); 

       if(myDate1.after(myDate2) && myDate1.before(myDate3)) // means --> if(proj_close_date.after(frm_date) && proj_close_date.before(to_date)) 
       {       
        if(myDate1.after(myDate4)) // means --> if(proj_close_date.after(added_on)) 
        { 
         bean.setCust_code(rs.getString("customer_code")); 
         bean.setProject_code(rs.getString("project_code")); 
         list.add(bean); 
        }    
        else 
        { 
         bean.setCust_code(rs.getString("customer_code")); 
         bean.setProject_code(rs.getString("project_code")); 
         list.add(bean); 
        } 
       }//if  
      }//else 

     }//try 
     catch (ParseException e) 
     { 
      System.out.println("Invalid Date Parser Exception "); 
      e.printStackTrace(); 
     } 


    } 
    rs.close(); 
    stmt.close(); 

} 
catch(SQLException sex) 
{ 
    sex.printStackTrace(); 
} 
finally 
{ 
    closeConnection(); 
} 
+0

В чем проблема? – Pram

+0

В чем вопрос? –

+0

Я не знаю, какова ваша цель, но не могли бы вы просто использовать Date или Calendar для сравнения? –

ответ

2

Вы установили myDateFormat1 в "yyyy-mm-dd hh:mm:ss.SSSSSS". Я думаю, что первый mm должен быть в верхнем регистре.

Я рекомендую вам проверить строки формата с документацией, если SimpleDateFormat.

2

Несколько замечаний

  • convention для имен классов Java, чтобы каждое существительное капитализируется reportBean становится ReportBean
  • не относится к столбцам SQL положения, всегда использовать имя вместо rs.getString("customer_code"), а не rs.getString(3)
  • использовать осмысленные имена переменных, myDate1 становится closeDate
  • практика debugging your code, так что вы можете устранить System.out.println()
  • грациозно высвобождают ресурсы, stmt.close() перемещается в пределах, наконец, блок
  • использовать logging framework, а не глотать Exception, например, log.error("Invalid Date Parser Exception", e);

Некоторые конкретные указатели:

new SimpleDateFormat("yyyy-mm-dd hh:mm:ss.SSSSSS") // as already noted, mm is the format for minute, MM is the format for month 

myDate4 = myDateFormat.format(myDate5); // invalid as you are asigning a String to a Date 

if(myDate1.after(myDate4)) // irrelevant as both if & else block execute the same code 

rs.close() // not necessary as closed when `Statement` is closed 

Javadoc

Вы уверены, что ваша схема базы данных - это все varchar столбцов? Я бы рекомендовал вам исправить это, если это произойдет. В противном случае вы можете позвонить rs.getDate().

Смежные вопросы