java calendar timem_Java:Date、Calendar、Timestamp的使用

一、Java.util.Date

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

//String 转换为Date

private static voiddateDemo() throws ParseException{

String dateStr="2016-05-31 13:45:04";

String pattern="yyyy-MM-dd HH:mm:ss";

DateFormat df=newSimpleDateFormat(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 voidsqlDateDemo(){

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 2016sqld: 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 voidcalendarDemo(){//Date转为Calendar

Date date=newDate();

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 voidtimestampDemo(){Date date=newDate();//java.util.Calendar转换为java.sql.Timestamp

newTimestamp(Calendar.getInstance().getTimeInMillis());//java.util.Date转换为java.sql.Timestamp

newTimestamp(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不是毫秒值,也不是微秒值。

参考文件:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值