Java中时间类型简单的思考

[b]1、java.util.Date及其格式化[/b]
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毫秒。

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


//打印出年,月,日,小时,分钟,秒还有时区
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

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

//定义时间格式,默认是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
[b]4、timestamp[/b]
在开发web应用中,针对不同的数据库日期类型,我们需要在我们的程序中对日期类型做各种不同的转换。若对应数据库数据是oracle的Date类型,即只需要年月日的,可以选择使用java.sql.Date类型,若对应的是MSsqlserver数据库的DateTime类型,即需要年月日时分秒的,选择java.sql.Timestamp类型。

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

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

SimpleDateFormat simpDatef2 = new SimpleDateFormat("MM-dd-yyyy hh:mm:ss");
String datef2 = simpDatef2.format(date1);


String -> Date

Date date4 = simpDatef3.parse(dates2);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值