將String型的“****年**月**日”轉(zhuǎn)換成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); 對參數(shù)dtToDate(String類型)從第一個字符開始解析(由pos),轉(zhuǎn)換成java.util.Date類型, 而這個Date的格式為"yyyy-MM-dd"(因為SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");) 3. java.sql.Timestamp(與java.sql.Date) 在開發(fā)web應(yīng)用中,針對不同的數(shù)據(jù)庫日期類型,我們需要在我們的程序中對日期類型做各種不同的轉(zhuǎn)換。若對應(yīng)數(shù)據(jù)庫數(shù)據(jù)是oracle的Date類型,即只需要年月日的,可以選擇使用java.sql.Date類型, 若對應(yīng)的是MSsqlserver數(shù)據(jù)庫的DateTime類型,即需要年月日時分秒的,選擇java.sql.Timestamp類型 你可以使用dateFormat定義時間日期的格式,轉(zhuǎn)一個字符串即可 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 將字符串類型的日期轉(zhuǎn)換為一個timestamp(時間戳記java.sql.Timestamp) dateString 需要轉(zhuǎn)換為timestamp的字符串 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);//設(shè)定格式 //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 將字符串類型的日期轉(zhuǎn)換為一個Date(java.sql.Date) dateString 需要轉(zhuǎn)換為Date的字符串 dataTime Date */ public final static java.sql.Date string2Date(String dateString) throws java.lang.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轉(zhuǎn)換為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), Calendar.getInstance().get( Calendar.MINUTE), Calendar.getInstance().get( Calendar.SECOND), 0); System.out.println(tt); try { String sToDate = "2005-8-18";//用于轉(zhuǎn)換成java.sql.Date的字符串 String sToTimestamp = "2005-8-18 14:21:12.123";//用于轉(zhuǎn)換成java.sql.Timestamp的字符串 Date date1 = string2Date(sToDate); Timestamp date2 = string2Time(sToTimestamp); System.out.println("Date:"+date1.toString());//結(jié)果顯示 System.out.println("Timestamp:"+date2.toString());//結(jié)果顯示 }catch(Exception e) { e.printStackTrace(); } } } =========================== 怎樣處理一個時間段,比如某人登陸了xx天xx小時xx分xx秒 這個問題可以如下處理: 首先你肯定可以從數(shù)據(jù)庫中讀取這個用戶第一次登陸的具體時間: 不妨為2002-01-01 12:00:00 同樣他到目前為止最后登陸的具體時間: 不妨為2002-09-08 13:14:15 若取得是數(shù)據(jù)本來就是時間類型的,則不用轉(zhuǎn)化,若是String的則可以在轉(zhuǎn)化后處理。 你可以利用類似上面的例子,取得這兩個時間對應(yīng)的Timestamp值dateTime 然后使用dateTime.getTime()方法得到這兩個時間的long值,進行相減(大的減小的,即按時間后減先),得到一個long值,它是用毫秒milliseconds計算的,你將它換算一下就知道多少天多少小時多少分多少秒了 比如首先除于(java中/除)一天的毫秒數(shù),得到天,然后用余下的值除于一小時的毫秒數(shù),得到小時……最后就可以得到所有的需求了
|
|