Titan專欄

          用文字來(lái)整理生命

            BlogJava :: 首頁(yè) :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理 ::
            44 隨筆 :: 49 文章 :: 19 評(píng)論 :: 0 Trackbacks

          1.處理數(shù)據(jù)庫(kù),有DATE Java.sql.Date 日期,
          TIME Java.sql.Time 時(shí)戳,TIMESTAMP Java.sql.Timestamp 當(dāng)日日期和時(shí)間,
          對(duì)應(yīng)的ResultSet的方法
          DATE                          java.sql.Date                               java.sql.Date getDate()
          TIME                           java.sql.Time                               java.sql.Time getTime()
          TIMESTAMP              java.sql.Timestamp                   java.sql.Timestamp getTimestamp()
          根據(jù)java2的規(guī)范要求使用Java.sql.Timestamp,這樣不會(huì)失去精度詳見(jiàn)(http://blogger.org.cn/blog/more.asp?name=hongrui&id=7557)。對(duì)于oracle數(shù)據(jù)庫(kù)比較例外,可以用oracle.sql.TIMESTAMP
          這和他的版本也有關(guān)系。注意,SQLserver中timestamp 對(duì)應(yīng)的是 DateTime類型。
          使用spring的jdbc時(shí),盡可能用Java.sql.Timestamp詳見(jiàn)(http://blogger.org.cn/blog/more.asp?name=hongrui&id=9521)。
          下面給個(gè)例子
          public static java.sql.Timestamp getDBSysdate(Connection conn)
          throws Exception {
          Statement stmt = null;
          ResultSet rs = null;
          Timestamp sysTime = null;

          try {
          stmt = conn.createStatement();
          rs = stmt.executeQuery("SELECT SYSDATE FROM DUAL");
          if (rs.next()) {
          sysTime = rs.getTimestamp("SYSDATE");
          }
          } catch (Exception e) {

          } finally {
          try {
          if (rs != null) {
          rs.close();
          }
          if (stmt != null) {
          stmt.close();
          }
          } catch (Exception e) {

          }
          }

          return sysTime;
          }
          最好的辦法使用long存時(shí)間,使用Calendar 處理,就是表示日期時(shí)間不直觀。
          2.字符串轉(zhuǎn)化時(shí)間,注意不能判斷時(shí)間輸入是否正確,判斷時(shí)間輸入是否正確,請(qǐng)使用正則。
          try
               {
                String st="2005-13-32 12:00";
               java.text.DateFormat df = new SimpleDateFormat("yyyy-MM-dd hh:mm");
                        Date  starttime = df.parse(st);
               System.out.println(starttime.toString());       
               }
          catch(Exception ex)
          {
           
          }
          不要搞混了try-catch的功能。只有程序或系統(tǒng)拋出了異常,try-catch才能捕獲 ,得到Wed Feb 01 00:00:00 CST 2006
          這樣操作是錯(cuò)誤的,Timestamp是java.util.Date,會(huì)得到j(luò)ava.lang.ClassCastException,你犯了向下轉(zhuǎn)型的錯(cuò)誤。

          try
               {
                String st="2005-13-32 12:00";
               java.text.DateFormat df = new SimpleDateFormat("yyyy-MM-dd hh:mm");
                        Timestamp  starttime =(Timestamp) df.parse(st);
               System.out.println(starttime.toString());       
               }
          catch(Exception ex)
          {
           ex.printStackTrace();
          }
          應(yīng)該使用
          try {
             String st = "2005-12-2 12:00:00";
             Timestamp starttime = Timestamp.valueOf(st);
             System.out.println(starttime.toString());
            } catch (Exception ex) {
             ex.printStackTrace();
            }
            或
            import java.sql.*;
          import java.util.*;

          public class CreateTimestamp {
             public static void main(String [] args) {

             Calendar cal = Calendar.getInstance();

             cal.set(Calendar.YEAR, 2000);
             cal.set(Calendar.MONTH, Calendar.JANUARY);
             cal.set(Calendar.DATE, 1);
             cal.set(Calendar.HOUR_OF_DAY, 11);
             cal.set(Calendar.MINUTE, 45);
             cal.set(Calendar.SECOND, 30);
             cal.set(Calendar.MILLISECOND, 0);

             long millis = cal.getTime().getTime();
             System.out.println("milliseconds in millis = " + millis);
             java.sql.Timestamp ts = new java.sql.Timestamp(millis);
             System.out.println("Timestamp ts before setting nanos = " + ts);

             ts.setNanos(500);
             System.out.println("Timestamp ts with nanos set = " + ts);
             }
          }


          下面給出javadoc的方法
          1. java.sql.Date.valueOf(java.lang.String)

              public static Date valueOf(String s)
           Converts a string in JDBC date escape format to a Date value.

           Parameters:
           s - a String object representing a date in in the format "yyyy-mm-dd"
           Returns:
           a java.sql.Date object representing the given date
           Throws:
           IllegalArgumentException - if the date given is not in the JDBC date escape format (yyyy-mm-dd)

          2. java.sql.Time.valueOf(java.lang.String)

              public static Time valueOf(String s)
           Converts a string in JDBC time escape format to a Time value.

           Parameters:
           s - time in format "hh:mm:ss"
           Returns:
           a corresponding Time object

          3. java.sql.Timestamp.valueOf(java.lang.String)
            
             public static Timestamp valueOf(String s)
           Converts a String object in JDBC timestamp escape format to a Timestamp value.

           Parameters:
           s - timestamp in format yyyy-mm-dd hh:mm:ss.fffffffff
           Returns:
           corresponding Timestamp value
           Throws:
           IllegalArgumentException - if the given argument does not have the format yyyy-mm-dd hh:mm:ss.fffffffff

          posted on 2006-02-13 22:27 Titan 閱讀(562) 評(píng)論(0)  編輯  收藏 所屬分類: Java技術(shù)
          主站蜘蛛池模板: 波密县| 城市| 巢湖市| 西安市| 旬阳县| 龙山县| 手游| 丽水市| 南郑县| 浦江县| 修水县| 纳雍县| 丹巴县| 宾川县| 青川县| 渝北区| 剑川县| 弋阳县| 海门市| 五常市| 边坝县| 太湖县| 迁安市| 桂阳县| 桐庐县| 马公市| 济南市| 肃南| 通海县| 达拉特旗| 高雄县| 内黄县| 宕昌县| 玉田县| 枞阳县| 连江县| 桂阳县| 固始县| 剑阁县| 昆明市| 三江|