日期在String和Date类型转换ParsePo
发布时间:
日期在String 和Date类型转换
ParsePo 将String 型的"*年*月*日"转换成Date型private Date DTStri ngtoDate(Stri ng dtToDate{SimpleDateFormat formatter =new SimpleDateFormat("yyyy-MM-dd" ; ParsePosition pos=new ParsePosition(0 ;
java.util.Date datetime=formatter.parse(dtToDate,pos ; java.sql.Timestamp ts=null if(datetime ! =n ull{ts=new java.sql.Timestamp(datetime.getTime( ; }return ts ; } ; 分析如下:1.ParsePositio n pos=new ParsePositio n(0 ;从第一个字符
是
开始解析
public class ParsePosition extends Object ParsePosition Format及其子类所使用的简单类,用来在分析过程中跟踪当前位置。
2java.util.Date datetime=formatter.parse(dtToDate,pos ; 对参数dtToDate(String 类型从第一个字符开始解析(由pos,转换成
java.util.Date 类型,而这个 Date的格式为"yyyy-MM-dd"(因为 SimpleDateFormat formatter =new SimpleDateFormat("yyyy-MM-dd" 3.java.sql.Timestamp( 与
java.sql.Date ;
在开发web应用中,针对不同的数据库日期类型,我们需要在我们的程序 中对日期类型做各种不同的转换。若对应数据库数据是 即只需要年月日的,可以选择使用java.sql.Date oracle的Date类型,
类型,若对应的是
MSsqlserver数据库的DateTime类型,即需要年月日时分秒的,选择
java.sql.Timestamp 类型你可以使用dateFormat定义时间日期的格式,转一
个字符串即可
package personal.jessica ; import java.util.Date ;
import java.util.Calendar ; import java.sql.Timestamp ;
import
java.text.DateFormat ; import java.text.SimpleDateFormat ; import java.util.Locale ;
class Datetest{/**method 将字符串类型的日期转换为一
需要转换为
个 timestamp(时间戳记
java.sql.Timestamp*@param dateString timestamp 的字符串 *@return dataTime timestamp*/public final static java.sql.Timestamp stri ng2Time(Stri ng dateStri ngthrows java.text.ParseException{DateFormat dateFormat ;
dateFormat=new SimpleDateFormat("yyyy-MM-dd kk : mm ss.SSS",Locale.ENGLISH ; // 设定 格式//dateFormat=new SimpleDateFormat("yyyy-MM-dd kk : mm ss",Locale.ENGLISH ;
dateFormat.setLenient(false timeDate=dateFormat.parse(dateString ;
java.util.Date ; //util 类型
java.sql.Timestamp dateTime=new java.sql.Timestamp(timeDate.getTime( ; //Timestamp 类
型,timeDate.getTime( 返回一个 long 型 return dateTime ; }/**method 将字 符串类型的日期转换为一个
Date(java.sql.Date*@param dateStri ng 需要转
换为 Date 的字符串
*@return dataTime Date*/public final static java.sql.Date stri ng2Date(Stri ng dateStri ngthrows java」ang.Exception{DateFormat dateFormat ;
dateFormat=new SimpleDateFormat("yyyy-MM-dd",Locale.ENGLISH; 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 static void main(String args{Date da=new Date( //注意:这个地方da.getTime(得到的是一个long型的值
System.out.println(da.getTime( ;
; // 由日期 date 转换为 timestamp// 第一
种方法:使用
new Timestamp(longTimestamp t=new Timestamp(new Date(.getTime( ; System.out.println(t ;
// 第二种方法:使用 Timestamp(int year,int month,int date,int hour,i nt minu te,i nt sec on d,i nt nano Timestamp tt=new Timestamp(Cale ndar.getl nsta nce(.get(Cale ndar.YEAR- 1900,Cale ndar.get In sta nce(.get(Cale ndar.MONTH,Cale ndar.get In sta nce( .get(Cale ndar.DATE,Cale ndar.getl nsta nce(.get(Cale ndar.HOUR,Cale nd ar.get In sta nce(.get(Cale ndar.MINUTE,Cale ndar.getl nsta nce(.get(Cale
ndar.SECOND,0; System.out.println(tt ; try{String sToDate="2005-8-18" ; // 用于转换成 java.sql.Date 的字符 : 21: 12.123" ; // 用于转换成
串
String sToTimestamp="2005-8-18 14 java.sql.Timestamp 的字符串 Date date1=string2Date(sToDate ; Timestamp date2=string2Time(sToTimestamp ;
System.out.println("Date "+date1.toString( ; // 结果显示 System.out.println("Timestamp : "+date2.toString( ; // 结果显示}catch(Exception e{e.printStackTrace( ; }}}===怎样处理一个时间段,比如某人登陆了 xx小时xx分xx秒
xx天
这个问题可以如下处理:首先你肯定可以从数据库中读取这个用户第一次 登陆的具体时间:不妨为2002-01-01 12 : 00: 00同样他到目前为止最后登陆 的具体时间:不妨为2002-09-08 13 : 14: 15若取得是数据本来就是时间类型 的,则不用转化,若是Stri ng的则可以在转化后处理。你可以利用类似上面的 例子,取得这两个时间对应的 Timestamp值dateTime然后使用 dateTime.getTime(