日期在String和Date类型转换 ParsePo
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
日期在String和Date类型转换
ParsePo
将String型的"*年*月*日"转换成Date型private Date DTStringtoDate(String 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!=null){ts=new
java.sql.Timestamp(datetime.getTime());}return ts;}
分析如下:1.ParsePosition pos=new ParsePosition(0);从第一个字符开始解析public class ParsePosition extends Object ParsePosition是Format及其子类所使用的简单类,用来在分析过程中跟踪当前位置。
2.java.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应用中,针对不同的数据库日期类型,我们需要在我们的程序中对日期类型做各种不同的转换。
若对应数据库数据是oracle的Date类型,即只需要年月日的,可以选择使用java.sql.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 string2Time(String dateString)throws
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);java.util.Date timeDate=dateFormat.parse(dateString);//util类型java.sql.Timestamp dateTime=new java.sql.Timestamp(timeDate.getTime());//Timestamp类型,timeDate.getTime()返回一个long型return dateTime;}/**method将字符串类型的日期转换为一个Date(java.sql.Date)*@param dateString需要转换为Date的字符串*@return dataTime Date*/public final static
java.sql.Date string2Date(String dateString)throws
ng.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(long)Timestamp t=new Timestamp(new
Date().getTime());System.out.println(t);
//第二种方法:使用Timestamp(int year,int month,int date,int hour,int minute,int second,int nano)Timestamp tt=new
Timestamp(Calendar.getInstance().get(Calendar.YEAR)-
1900,Calendar.getInstance().get(Calendar.MONTH),Calendar.getInstance( ).get(Calendar.DATE),Calendar.getInstance().get(Calendar.HOUR),Calend
ar.getInstance().get(Calendar.MINUTE),Calendar.getInstance().get(Cale ndar.SECOND),0);System.out.println(tt);
try{String sToDate="2005-8-18";//用于转换成java.sql.Date的字符串String sToTimestamp="2005-8-18 14:21:12.123";//用于转换成
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若取得是数据本来就是时间类型的,则不用转化,若是String的则可以在转化后处理。
你可以利用类似上面的例子,取得这两个时间对应的Timestamp值dateTime然后使用
dateTime.getTime()方法得到这两个时间的long值,进行相减(大的减小的,即按时间后减先),得到一个long值,它是用毫秒milliseconds计算的,你将它换算一下就知道多少天多少小时多少分多少秒了比如首先除于(java中/除)
一天的毫秒数,得到天,然后用余下的值除于一小时的毫秒数,得到小时…最后就可以得到所有的需求了。