Java:Date、Calendar、Timestamp的使用

摘要:
用于与数据库相关的操作,如rs.getTimestamp、ps.setTimeStamp等。Privatestaticvoid timestampDemo(){Datedate=newDate();//java.util.Calendar转换为java.sql.TimestampnewTimestamp;//java.til.Date转换为java.sql.Timestamp;//String转换为java.sql。Timestamp.Timestam.String格式:yyyy-mm-ddhh:mm:ss[.f。。。],方括号表示可选的时间戳。valueOf;}5、 Oracle数据库提供日期和时间类型。Oracle数据库提供四种类型:DATE、TIMESTAMP、TIMESTAMPWITH TIMEZONE和TIMESTAMPWITH LOCALTIMEZONE。

一、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

免责声明:文章转载自《Java:Date、Calendar、Timestamp的使用》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇babel的可选链,空值合并等常用插件unity替换mesh测试下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

js获取7天之前的日期或者7天之后的日期

js获取7天之前的日期或者7天之后的日期(网上摘取的,记录自己使用) function fun_date(num) { var date1 = new Date(); //今天时间 var time1 = date1.getFullYear() + "-" + (date1.getMonth() + 1) + "-" + date...

logstash timestamp时间差8小时问题及解决

       1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 logstas...

Javascript 计算请假天数

转载请注明本文地址:https://www.cnblogs.com/qiaoge0923/p/10219155.html  计算请假天数,笼统来说就是计算两个日期的差值。对于JS来说,两个时间直接相减,得到的是这两个时间差的毫秒数。 先上代码后贴图。 1.测试数据 后文中用到的测试数据如下: var dateStart = '2018-12-01 04...

Python解析Pcap包类源码学习

0x1、前言 ​ 在现场取证遇到分析流量包的情况会比较少,虽然流量类设备原理是把数据都抓出来进行解析,很大一定程度上已经把人可以做的事情交给了机器自动完成。 ​ 可用于PCAP包分析的软件比如科来,Wireshark都是很好用的分析软件,找Pcap解析的编程类代码时发现已经有很多大佬写过Python脚本辅助解析Pcap,也有提取将Pcap信息以界面形式展示...

VUE 日历签到

<style lang="scss"> @import "../assets/css/px2rem.scss"; .sign-box { 100%; min-height: 100%; background: #f5f5f5; position: relative; .top-box { padding: px2r...

UNIX时间戳及日期的转换与计算

UNIX时间戳是保存日期和时间的一种紧凑简洁的方法,是大多数UNIX系统中保存当前日期和时间的一种方法,也是在大多数计算机语言中表示日期和时间的一种标准格式。以32位整数表示格林威治标准时间,例如,使用证书11230499325表示当前时间的时间戳。UNIX时间戳是从1970年1月1日零点(UTC/GMT的午夜)开始起到当前时间所经过的秒数。1970年1月...