/**
     * Convert string to date object
     * @param strD the string date format:yyyy-MM-dd HH:mm:ss
     * @return
     */
    public static Date strToDate(String strD)
    {
        try
        {
            String strFormat = "yyyy-MM-dd HH:mm:ss";
            SimpleDateFormat sdf = new SimpleDateFormat(strFormat);
            return sdf.parse(strD);
        }catch(java.text.ParseException e)
        {
            throw new mfutil.MFUtilException("Can not convert string to date object:"+ strD);
        }
    }

解决方案 »

  1.   

    另一种方法:
    to_date(strDate,'YYYY-MM-DD HH:MS:SS')
      

  2.   

    to_date()是oracle中的字符串转时期格式吧,
    java中用SimpleDateFormat类格式化,,
    构造函数的参数就是格式字符串.
      

  3.   

    我写一个时间类
    package LR.cclient;
    import java.util.*;
    import java.util.GregorianCalendar;
    public class JDate
    {
     //字符串转换标志
     public final static int Enum_DateTime=0x0001; //日期格式:YYYY-MM-DD HH:MM:SS
     public final static int Enum_Time    =0x0002; //日期格式:HH:MM:SS
     public final static int Enum_Date    =0x0003; //日期格式:YYYY-MM-DD
     public final static String[] WEEK={"星期一","星期二","星期三","星期四","星期五","星期六","星期七",};
     public final static String[] QUARTER={"第一季度","第二季度","第三季度","第四季度"};
     private int m_Year;  //年
     private int m_Month;  //月
     private int m_Day;    //日
     private int m_Hour;   //时
     private int m_Minutes; //分
     private int m_Seconds; //秒  public JDate()
     {
          this.setDate(0,0,0,0,0,0);
     }
     //取当前计算机时间
     public static JDate GetCurrentTime()
     {
          JDate currDate=new JDate();
              Calendar calendar = new GregorianCalendar();
      Date trialTime = new Date();
      calendar.setTime(trialTime);
          currDate.setYear(calendar.get(Calendar.YEAR));
          currDate.setMonth(calendar.get(Calendar.MONTH)+1);
          currDate.setDay(calendar.get(Calendar.DATE));
          currDate.setHour(calendar.get(Calendar.HOUR_OF_DAY));
          currDate.setMinutes(calendar.get(Calendar.MINUTE));
          currDate.setSeconds(calendar.get(Calendar.SECOND));
          return currDate;     
     }
     public int getYear()
     {
      return m_Year;
     }
     public int getMonth()
     {
      return m_Month;
     }
     public int getDay()
     {
      return m_Day;
     }
     public int getHour()
     {
      return m_Hour;
     }
     public int getMinutes()
     {
      return m_Minutes;
     }
     public int getSeconds()
     {
      return this.m_Seconds;
     }
     public void setYear(int y)
     {
            m_Year=y;
     }
     public boolean setMonth(int m)
     {
    this.m_Month=m;
    return m>=1&&m<=12;
     }
     public boolean setDay(int d)
     {
            this.m_Day=d;
            return d<=this.calcCurrentMonthDay();
     }
     public boolean setHour(int h)
     {
           this.m_Hour=h;
           return h>=0&&h<=24;
     }
     public boolean setMinutes(int m)
     {
      this.m_Minutes=m;
    return m>=0&&m<=59;
     }
     public boolean setSeconds(int s)
     {
      this.m_Seconds=s;
    return s>=0&&s<=59;
     }
     public void setDate(JDate date)
     {
    m_Year=date.getYear();
    m_Month=date.getMonth();
    m_Day = date.getDay();
    m_Hour = date.getHour();
    m_Minutes = date.getMinutes();
    m_Seconds = date.getSeconds();
     }
     public void setDate(int Year,int Month,int Day,int Hour,int Minutes,int Seconds)
     {
    m_Year=Year;
    m_Month = Month;
    m_Day = Day;
    m_Hour = Hour;
    m_Minutes = Minutes;
    m_Seconds = Seconds;
     }
     //计算当月的天数
     public int calcCurrentMonthDay()
     {
            if(m_Month==2)
            {
                  return (((m_Year%4==0)&&(m_Year%100!=0))||(m_Year%400==0))?29:28;
            }      
            else if(m_Month<=7&&m_Month!=2)
            {
                  return  m_Month%2==0?30:31;
            }      
            else
            {
                  return m_Month%2==0?31:30;
            }      
     }
     //计算到当年的零点的秒数
     public int CalcSecondsInDate()
     {
      int sum=0;
      for(int i=1;i<getMonth();i++)
      {
       if(i==2)
         sum+=(((getYear()%4==0)&&(getYear()%100!=0))||(getYear()%400==0))?29:28;
       else if((i<=7)&&(i!=2))
         sum+=(i%2==0)?30:31;
       else if(i>=8&&i!=2)
         sum+=(i%2==0)?31:30;
      }
      sum=sum+getDay()-1;
      sum=sum*24*3600;
      sum=sum+3600*getHour()+60*getMinutes()+getSeconds();
      return sum;
     }
      

  4.   

    //计算当天零点到当年零点的秒数
     public int CalcSecondsToday()
     {  
      int sum=0;
    for(int i=1;i<getMonth();i++)
    {
       if(i==2)
         sum+=(((getYear()%4==0)&&(getYear()%100!=0))||(getYear()%400==0))?29:28;
       else if((i<=7)&&(i!=2))
         sum+=(i%2==0)?30:31;
       else if(i>=8&&i!=2)
         sum+=(i%2==0)?31:30;
    }
    sum=sum+getDay()-1;
    sum=sum*24*3600;
    return sum;
     }
     //计算当年的秒数
     public int CalcSecondsInAYear()
     {
      int sum=0;
      for(int i=1;i<=12;i++)
      {
       if(i==2)
         sum+=(((getYear()%4==0)&&(getYear()%100!=0))||(getYear()%400==0))?29:28;
       else if((i<=7)&&(i!=2))
         sum+=(i%2==0)?30:31;
       else if(i>=8&&i!=2)
         sum+=(i%2==0)?31:30;
      }  
      sum=sum*24*3600;
      return sum;
     }
     //计算时间由年和秒数
     public void calcDateTimeInSeconds(int year,int sum)
     {
      JDate time=new JDate();
      time.setYear(year);
      time.setMonth(1);
      time.setDay(1);
      JDate time1=time.calcDateTimeAddSeconds(sum);
      setDate(time1.m_Year,time1.m_Month,time1.m_Day,time1.m_Hour,time1.m_Minutes,time1.m_Seconds);
     }
     //增加秒数变成新的时间
     public JDate calcDateTimeAddSeconds(int Sum)
     {
       JDate date1=new JDate();
       date1.m_Year = m_Year;
       date1.m_Month=m_Month;
       date1.m_Day=m_Day;
       date1.m_Hour=m_Hour;
       date1.m_Minutes=m_Minutes;
       date1.m_Seconds=m_Seconds;
       if(date1.m_Seconds+Sum>=60)
       {
        date1.m_Minutes+=(date1.m_Seconds+Sum)/60;
        date1.m_Seconds=(date1.m_Seconds+Sum)%60;
       }
       if(date1.m_Minutes>=60)
       {
        date1.m_Hour+=(date1.m_Minutes/60);
        date1.m_Minutes=date1.m_Minutes%60;
       }
       if(date1.m_Hour>=24)
       {
        date1.m_Day+=(date1.m_Hour/24);
        date1.m_Hour=(date1.m_Hour%24);
       }
       while(date1.m_Day>date1.calcCurrentMonthDay())
       {
        date1.m_Day-=date1.calcCurrentMonthDay();
        date1.m_Month++;
       }
       while(date1.m_Month>12)
       {
        date1.m_Month-=12;
        date1.m_Year++;
       }
       return date1;
         }
         //输出时间的字符串格式
     public String toString(int type)
         {
               String s=new String();
               if(type==JDate.Enum_Time)
               {
                    if(this.m_Hour<10)
                       s="0"+this.m_Hour;
                     else
                       s=""+this.m_Hour;
                    if(this.m_Minutes<10)
                       s=s+":0"+this.m_Minutes;
                    else
                       s=s+":"+this.m_Minutes;
                    if(this.m_Seconds<10)
                       s=s+":0"+this.m_Seconds;
                    else
                       s=s+":"+this.m_Seconds;
               }
               else if(type==JDate.Enum_Date)
               {
                    s=s+this.m_Year;
                    if(this.m_Month<10)
                       s=s+"-0"+this.m_Month;
                    else
                       s=s+"-"+this.m_Month;
                    if(this.m_Day<10)
                       s=s+"-0"+this.m_Day;
                    else
                       s=s+"-"+this.m_Day;
               }
               else if(type==JDate.Enum_DateTime)
               {
                    s=s+this.m_Year;
                    if(this.m_Month<10)
                       s=s+"-0"+this.m_Month;
                    else
                       s=s+"-"+this.m_Month;
                    if(this.m_Day<10)
                       s=s+"-0"+this.m_Day;
                    else
                       s=s+"-"+this.m_Day;
                    if(this.m_Hour<10)
                       s=s+" 0"+this.m_Hour;
                     else
                       s=s+" "+this.m_Hour;
                    if(this.m_Minutes<10)
                       s=s+":0"+this.m_Minutes;
                    else
                       s=s+":"+this.m_Minutes;
                    if(this.m_Seconds<10)
                       s=s+":0"+this.m_Seconds;
                    else
                       s=s+":"+this.m_Seconds;
               }      
               return s;
         }
         //将字符串转换为时间
         public void StringToDate(String str)
     {
      try{
      this.setDate(0,0,0,0,0,0);
      this.setYear(Integer.parseInt(str.substring(0,str.indexOf("-"))));
      str=str.substring(str.indexOf("-")+1);
      this.setMonth(Integer.parseInt(str.substring(0,str.indexOf("-"))));
      str=str.substring(str.indexOf("-")+1);
      if(str.indexOf(" ")!=-1)
      {
         this.setDay(Integer.parseInt(str.substring(0,str.indexOf(" "))));
      str=str.substring(str.indexOf(" ")+1);
      this.setHour(Integer.parseInt(str.substring(0,str.indexOf(":"))));
      str=str.substring(str.indexOf(":")+1);
      this.setMinutes(Integer.parseInt(str.substring(0,str.indexOf(":"))));
      str=str.substring(str.indexOf(":")+1);
      this.setSeconds(Integer.parseInt(str));
      }
      else
      {
         this.setDay(Integer.parseInt(str));//只有天数
      }
     }
     catch(Exception ex)
     {
      System.out.println("StringToDate="+ex.getMessage());
     }  
     }
     //计算两个时间间隔的秒数
     public int calcIntervalSeconds(JDate endtime)
     {  
      JDate yearDate=new JDate();  
      int startInterval=this.CalcSecondsInDate();
      int endInterval=endtime.CalcSecondsInDate();
      if(endtime.getYear()>=this.m_Year)
      {
      for(int i=0;i<endtime.getYear()-this.m_Year;i++)
      {
      yearDate.setYear(this.m_Year+i);
      endInterval=endInterval+yearDate.CalcSecondsInAYear();
      } 
      }
      else
      {
      for(int i=0;i<this.m_Year-endtime.getYear();i++)
      {
      yearDate.setYear(endtime.getYear()+i);
      startInterval=startInterval+yearDate.CalcSecondsInAYear();
      }  
      } 
      return endInterval-startInterval;
     }
     //得到是星期几第一天是星期一
     public int getIndexInWeek()
     {  
      Calendar calendar = new GregorianCalendar();
        calendar.set(this.m_Year,this.m_Month-1,this.m_Day,this.m_Hour,this.m_Minutes,this.m_Seconds);   
        return calendar.get(Calendar.DAY_OF_WEEK)==0?7:calendar.get(Calendar.DAY_OF_WEEK);      
     }  
    }