zoukankan      html  css  js  c++  java
  • Java:Date、Calendar、Timestamp的使用

    一、Java.util.Date

         该对象包含了年月日时分秒信息。具体使用如下代码:

        //String 转换为Date
        private static void dateDemo() throws ParseException{
            String dateStr="2016-05-31 13:45:04";
            String pattern="yyyy-MM-dd HH:mm:ss";
            DateFormat df=new SimpleDateFormat(pattern);
            Date date=df.parse(dateStr);
            System.out.println(date.getTime());
        }

    注意:年月日时分秒的表现形式:

    • 年份 y 由整数 y - 1900 表示。
    • 月份由从 0 至 11 的整数表示;0 是一月、1 是二月等等;因此 11 是十二月。
    • 日期(一月中的某天)按通常方式由整数 1 至 31 表示。
    • 小时由从 0 至 23 的整数表示。因此,从午夜到 1 a.m. 的时间是 0 点,从中午到 1 p.m. 的时间是 12 点。
    • 分钟按通常方式由 0 至 59 的整数表示。
    • 秒由 0 至 61 的整数表示;值 60 和 61 只对闰秒发生,尽管那样,也只用在实际正确跟踪闰秒的 Java 实现中。于按当前引入闰秒的方式,两个闰秒在同一分钟内发生是极不可能的,但此规范遵循 ISO C 的日期和时间约定。

    二、Java.sql.Date

      包含年、月、日信息。继承自Java.util.Date。在数据库相关操作中使用,如rs.getDate,ps.setDate等。rs是指ResultSet,ps是指PreparedStatement。

      一个包装了毫秒值的瘦包装器 (thin wrapper),它允许 JDBC 将毫秒值标识为 SQL DATE 值。毫秒值表示自 1970 年 1 月 1 日 00:00:00 GMT 以来经过的毫秒数。

      为了与 SQL DATE 的定义一致,由 java.sql.Date 实例包装的毫秒值必须通过将小时、分钟、秒和毫秒设置为与该实例相关的特定时区中的零来“规范化”。

    private static void sqlDateDemo(){
            Date d=new Date();  //java.util.date
            java.sql.Date sqld=    new java.sql.Date(d.getTime());  //转换为java.sql.date
            System.out.println("sqld: --- "+sqld.getTime());
            System.out.println("sqld: toString--- "+sqld.toString());
        }

    特别注意

      java.util.date与java.sql.date的ToString()方法的区别:

      运行结果:

    java.utl.date:  toString()===Tue May 31 13:45:04 CST 2016
    sqld: toString--- 2016-05-31

    解释:

      java.util.date的toString():把此 Date 对象转换为以下形式的 String: dow mon dd hh:mm:ss zzz yyyy 其中: dow 是一周中的某一天 (Sun, Mon, Tue, Wed, Thu, Fri, Sat)。

      java.sql.date的toString():格式化日期转义形式 yyyy-mm-dd 的日期。

    三、Java.util.calendar

      Calendar 类是一个抽象类,包含年、月、日、时、分、秒、毫秒信息。从JDK1.1开始引入,calendar用以代替java.util.Date。

    //java.util.date与calendar的互转
        private static void calendarDemo(){
            // Date转为Calendar  
            Date date=new Date();  
            Calendar calendar=Calendar.getInstance();  
            calendar.setTime(date);  
              System.out.println("Calendar date:==="+calendar.DATE);
            // Calendar转为Date  
            Calendar ca=Calendar.getInstance();     //当前时间
            Date d =(Date) ca.getTime();  
            System.out.println("java.util.date:toString()===:  "+d.toString());
        }

    友情注意:Calendar获取年月日的方法:

    System.out.println("Calendar date:==="+calendar.get(calendar.DATE));  //--日期   红色字体表示:获取字段数字类似与索引
    
    System.out.println("ca date:==="+ca.get(ca.DAY_OF_WEEK) );  //星期几

    四、java.sql.timestamp

    包含年、月、日、时、分、秒、纳秒(nano)信息。

    继承自java.util.Date。比java.sql.Date包含更多信息。在数据库相关操作中使用,如rs.getTimestamp,ps.setTimeStamp等。例如:若数据库中某字段hireDate为Oracle的Date类型,则使用getTimestamp时能够将年、月、日、时、分、秒信息取出;但使用getDate时则只能取出年、月、日信息。因此,一般推荐使用getTimestamp。

        private static void timestampDemo(){
            Date date=new Date();
            // java.util.Calendar转换为java.sql.Timestamp  
            new Timestamp(Calendar.getInstance().getTimeInMillis());  
            // java.util.Date转换为java.sql.Timestamp  
            new Timestamp(date.getTime());  
            // String转换为java.sql.Timestamp,String格式:yyyy-mm-dd hh:mm:ss[.f...] ,方括号表示可选  
            Timestamp.valueOf("2013-07-06 01:49:30"); 
        }

    五、Oracle数据库提供的日期和时间类型

    Oracle数据库提供了DATE,TIMESTAMP,TIMESTAMP WITH TIME ZONE和TIMESTAMP WITH LOCAL TIME ZONE四种类型。

    DATE包含世纪、年、月、日、时、分、秒信息。

    TIMESTAMP是DATE的扩展,包含年、月、日、时、分、秒和fractional seconds信息。定义TIMESTAMP的格式如下:

    TIMESTAMP [(fractional_seconds_precision)]  
    // 格式  
    TIMESTAMP 'YYYY-MM-DD HH24:MI:SS.FF'  
    // 一个例子  
    TIMESTAMP '1997-01-31 09:26:50.12

    其中fractional_seconds_precision是可选的,用于指定秒使用含几位小数的浮点数表示,它的取值范围是0到9,默认是6。上述例子中表示采用两位小数,它的秒值是50.12。注意:12不是毫秒值,也不是微秒值。

    参考文件:

    http://docs.oracle.com/cd/B19306_01/server.102/b14225/ch4datetime.htm#i1005983

  • 相关阅读:
    Algorithm Gossip (48) 上三角、下三角、对称矩阵
    .Algorithm Gossip (47) 多维矩阵转一维矩阵
    Algorithm Gossip (46) 稀疏矩阵存储
    Algorithm Gossip (45) 费氏搜寻法
    Algorithm Gossip (44) 插补搜寻法
    Algorithm Gossip (43) 二分搜寻法
    Algorithm Gossip (42) 循序搜寻法(使用卫兵)
    Algorithm Gossip (41) 基数排序法
    Algorithm Gossip (40) 合并排序法
    AlgorithmGossip (39) 快速排序法 ( 三 )
  • 原文地址:https://www.cnblogs.com/renxiaoren/p/5546485.html
Copyright © 2011-2022 走看看