java的时间类型_Java中时间类型简单的思考

1、java.util.Date及其格式化 Date 类有两个附加的功能,一是表示年月日时分秒,二是对日期字符进行格式化和分析。但是由于API不符合国际规范。于是在JDK1.1中,Calendar类用于日期和时间域之间的转换;抽象类DateFormat对日期字符串进行格式化和分析,SimpleDateFormat类为DateFormat的实现类。

2、Java统计从1970年1月1日起的毫秒的数量表示日期。也就是说,例如,1970年1月2日,是在1月1日后的86,400,000毫秒。同样的,1969年12月31日是在1970年1月1日前86,400,000毫秒。

Java的Date类使用long类型纪录这些毫秒值.因为long是有符号整数,所以日期可以在1970年1月1日之前,也可以在这之后。Long类型表示的最大正值和最大负值可以轻松的表示290,000,000年的时间,这适合大多数人的时间要求。Date只是一个对long值的对象封装,它表现出的年月日的时间描述,只是它toString()方法提供的。

Java代码 spinner.gif

//打印出年,月,日,小时,分钟,秒还有时区

Date date1 = newDate();

System.out.println("-------------------date1--------------------\n"+date1);

//获得当前时间距离1970/1/1 0:0的毫秒差

longdatel1 = date1.getTime();

//获得当前时间的另一个方法,为当前时间距离1970/1/1 0:0的毫秒差

longdatel2 = System.currentTimeMillis();

//将时间以年,月,日,小时,分钟,秒还有时区形式打印出来

String dates1 = date1.toString();

System.out.println("-------------------datel1--------------------\n"+datel1);

System.out.println("-------------------datel2--------------------\n"+datel2);

System.out.println("-------------------dates1--------------------\n"+dates1);

//打印出年,月,日,小时,分钟,秒还有时区

Date date1 = new Date();

System.out.println("-------------------date1--------------------\n"+date1);

//获得当前时间距离1970/1/1 0:0的毫秒差

long datel1 = date1.getTime();

//获得当前时间的另一个方法,为当前时间距离1970/1/1 0:0的毫秒差

long datel2 = System.currentTimeMillis();

//将时间以年,月,日,小时,分钟,秒还有时区形式打印出来

String dates1 = date1.toString();

System.out.println("-------------------datel1--------------------\n"+datel1);

System.out.println("-------------------datel2--------------------\n"+datel2);

System.out.println("-------------------dates1--------------------\n"+dates1);

可以得到结果是: -------------------date1-------------------- Tue Mar 26 16:35:33 CST 2013 -------------------datel1-------------------- 1364286933197 -------------------datel2-------------------- 1364286933236 -------------------dates1-------------------- Tue Mar 26 16:35:33 CST 2013

3、SimpleDateFormat类是DateFormat的实现类。新建SimpleDateFormat对象的时候,可以规范时间的格式。然后通过format()方法将Date转化成String 。parse可以将日期字符串转换成Date类型

Java代码 spinner.gif

//定义时间格式,默认是13-3-26 下午2:16格式

SimpleDateFormat simpDatef1 = newSimpleDateFormat();

SimpleDateFormat simpDatef2 = newSimpleDateFormat("MM-dd-yyyy hh:mm:ss");

SimpleDateFormat simpDatef3 = newSimpleDateFormat("MM-dd-yyyy");

String datef1 = simpDatef1.format(date1);

String datef2 = simpDatef2.format(date1);

String datef3 = simpDatef3.format(date1);

//可以利用parse方法将String转化成Date时间类型

String dates2 = "03-12-2013";

try{

Date date4 = simpDatef3.parse(dates2);

String dates3 = simpDatef3.format(date4);

System.out.println("-------------------date4--------------------\n"+date4);

System.out.println("-------------------dates3--------------------\n"+dates3);

} catch(ParseException e) {

e.printStackTrace();

}

System.out.println("-------------------datef1--------------------\n"+datef1);

System.out.println("-------------------datef2--------------------\n"+datef2);

System.out.println("-------------------datef3--------------------\n"+datef3);

//定义时间格式,默认是13-3-26 下午2:16格式

SimpleDateFormat simpDatef1 = new SimpleDateFormat();

SimpleDateFormat simpDatef2 = new SimpleDateFormat("MM-dd-yyyy hh:mm:ss");

SimpleDateFormat simpDatef3 = new SimpleDateFormat("MM-dd-yyyy");

String datef1 = simpDatef1.format(date1);

String datef2 = simpDatef2.format(date1);

String datef3 = simpDatef3.format(date1);

//可以利用parse方法将String转化成Date时间类型

String dates2 = "03-12-2013";

try {

Date date4 = simpDatef3.parse(dates2);

String dates3 = simpDatef3.format(date4);

System.out.println("-------------------date4--------------------\n"+date4);

System.out.println("-------------------dates3--------------------\n"+dates3);

} catch (ParseException e) {

e.printStackTrace();

}

System.out.println("-------------------datef1--------------------\n"+datef1);

System.out.println("-------------------datef2--------------------\n"+datef2);

System.out.println("-------------------datef3--------------------\n"+datef3);

结果是: -------------------date4-------------------- Tue Mar 12 00:00:00 CST 2013 -------------------dates3-------------------- 03-12-2013 -------------------datef1-------------------- 13-3-26 下午4:35 -------------------datef2-------------------- 03-26-2013 04:35:33 -------------------datef3-------------------- 03-26-2013 4、timestamp    在开发web应用中,针对不同的数据库日期类型,我们需要在我们的程序中对日期类型做各种不同的转换。若对应数据库数据是oracle的Date类型,即只需要年月日的,可以选择使用java.sql.Date类型,若对应的是MSsqlserver数据库的DateTime类型,即需要年月日时分秒的,选择java.sql.Timestamp类型。

Java代码 spinner.gif

try{

String sToDate = "2005-8-18";//用于转换成java.sql.Date的字符串

String sToTimestamp = "2005-8-18 14:21:12.123";//用于转换成java.sql.Timestamp的字符串

Date date4 = string2Date(sToDate);

Timestamp datet1 = string2Time(sToTimestamp);

System.out.println("---------------------------Date:\n"+date4.toString());//结果显示

System.out.println("---------------------------Timestamp:\n"+datet1.toString());//结果显示

}catch(Exception e) {

e.printStackTrace();

}

publicfinalstaticjava.sql.Date string2Date(String dateString)

throwsjava.lang.Exception {

DateFormat dateFormat;

dateFormat = newSimpleDateFormat("yyyy-MM-dd");

//dateFormat.setLenient(false);

java.util.Date timeDate = dateFormat.parse(dateString);//util类型

java.sql.Date dateTime = newjava.sql.Date(timeDate.getTime());//sql类型

returndateTime;

}

publicfinalstaticjava.sql.Timestamp string2Time(String dateString)

throwsjava.text.ParseException {

DateFormat dateFormat;

dateFormat = newSimpleDateFormat("yyyy-MM-dd kk:mm:ss.SSS");//设定格式

//将String通过parse转化成Date

java.util.Date timeDate = dateFormat.parse(dateString);//util类型

//再将Date转换成timestamp

java.sql.Timestamp dateTime = newjava.sql.Timestamp(timeDate.getTime());//Timestamp类型,timeDate.getTime()返回一个long型

returndateTime;

}

try {

String sToDate = "2005-8-18";//用于转换成java.sql.Date的字符串

String sToTimestamp = "2005-8-18 14:21:12.123";//用于转换成java.sql.Timestamp的字符串

Date date4 = string2Date(sToDate);

Timestamp datet1 = string2Time(sToTimestamp);

System.out.println("---------------------------Date:\n"+date4.toString());//结果显示

System.out.println("---------------------------Timestamp:\n"+datet1.toString());//结果显示

}catch(Exception e) {

e.printStackTrace();

}

public final static java.sql.Date string2Date(String dateString)

throws java.lang.Exception {

DateFormat dateFormat;

dateFormat = new SimpleDateFormat("yyyy-MM-dd");

//dateFormat.setLenient(false);

java.util.Date timeDate = dateFormat.parse(dateString);//util类型

java.sql.Date dateTime = new java.sql.Date(timeDate.getTime());//sql类型

return dateTime;

}

public final static java.sql.Timestamp string2Time(String dateString)

throws java.text.ParseException {

DateFormat dateFormat;

dateFormat = new SimpleDateFormat("yyyy-MM-dd kk:mm:ss.SSS");//设定格式

//将String通过parse转化成Date

java.util.Date timeDate = dateFormat.parse(dateString);//util类型

//再将Date转换成timestamp

java.sql.Timestamp dateTime = new java.sql.Timestamp(timeDate.getTime());//Timestamp类型,timeDate.getTime()返回一个long型

return dateTime;

}

结果是: ---------------------------Date: 2005-08-18 ---------------------------Timestamp: 2005-08-18 14:21:12.123

5、小结

Date -> timestamp

Java代码 spinner.gif

dateFormat =newSimpleDateFormat("yyyy-MM-dd kk:mm:ss.SSS");//设定格式

java.util.Date timeDate = dateFormat.parse(dateString);//util类型

java.sql.Timestamp dateTime = newjava.sql.Timestamp(timeDate.getTime());//Timestamp类型,timeDate.getTime()返回一个long型

dateFormat = new SimpleDateFormat("yyyy-MM-dd kk:mm:ss.SSS");//设定格式

java.util.Date timeDate = dateFormat.parse(dateString);//util类型

java.sql.Timestamp dateTime = new java.sql.Timestamp(timeDate.getTime());//Timestamp类型,timeDate.getTime()返回一个long型

Date -> String

Java代码 spinner.gif

SimpleDateFormat simpDatef2 =newSimpleDateFormat("MM-dd-yyyy hh:mm:ss");

String datef2 = simpDatef2.format(date1);

SimpleDateFormat simpDatef2 = new SimpleDateFormat("MM-dd-yyyy hh:mm:ss");

String datef2 = simpDatef2.format(date1);

String -> Date

Java代码 spinner.gif

Date date4 = simpDatef3.parse(dates2);

Date date4 = simpDatef3.parse(dates2);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值