欧美三级电影完整|亚洲一二三四久久|性爱视频精品一区二区免费在线观看|国产精品啪啪视频|婷婷六月综合操人妻视频网站|99爱免费视频在线观看|美女一级片在线观看|北京熟女88av|免费看黄色A级电影|欧美黄色毛片儿

java.sql.Date和java.sql.Timestamp轉(zhuǎn)換

2023-04-12


在開發(fā)web應(yīng)用中,針對(duì)不同的數(shù)據(jù)庫日期類型,我們需要在我們的程序中對(duì)日期類型做各種不同的轉(zhuǎn)換。若對(duì)應(yīng)數(shù)據(jù)庫數(shù)據(jù)是oracle的Date類型,即只需要年月日的,可以選擇使用java.sql.Date類型,若對(duì)應(yīng)的是MSsqlserver數(shù)據(jù)庫的DateTime類型,即需要年月日時(shí)分秒的,選擇java.sql.Timestamp類型


你可以使用dateFormat定義時(shí)間日期的格式,轉(zhuǎn)一個(gè)字符串即可


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)換為一個(gè)timestamp(時(shí)間戳記java.sql.Timestamp)
*@paramdateString 需要轉(zhuǎn)換為timestamp的字符串
 *@returndataTime 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()返回一個(gè)long型
  return dateTime;
 }
 /**
  *method 將字符串類型的日期轉(zhuǎn)換為一個(gè)Date(java.sql.Date)
  *@param dateString 需要轉(zhuǎn)換為Date的字符串
  *@return 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();
  //注意:這個(gè)地方da.getTime()得到的是一個(gè)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();
  }
 }
}

怎樣處理一個(gè)時(shí)間段,比如某人登陸了xx天xx小時(shí)xx分xx秒


這個(gè)問題可以如下處理:


首先你肯定可以從數(shù)據(jù)庫中讀取這個(gè)用戶第一次登陸的具體時(shí)間:


不妨為2002-01-01 12:00:00


同樣他到目前為止最后登陸的具體時(shí)間:


不妨為2002-09-08 13:14:15


若取得是數(shù)據(jù)本來就是時(shí)間類型的,則不用轉(zhuǎn)化,若是String的則可以在轉(zhuǎn)化后處理。


你可以利用類似上面的例子,取得這兩個(gè)時(shí)間對(duì)應(yīng)的Timestamp值dateTime


然后使用dateTime.getTime()方法得到這兩個(gè)時(shí)間的long值,進(jìn)行相減(大的減小的,即按時(shí)間后減先),得到一個(gè)long值,它是用毫秒milliseconds計(jì)算的,你將它換算一下就知道多少天多少小時(shí)多少分多少秒了


比如首先除于(java中/除)一天的毫秒數(shù),得到天,然后用余下的值除于一小時(shí)的毫秒數(shù),得到小時(shí)……最后就可以得到所有的需求了



本文僅代表作者觀點(diǎn),版權(quán)歸原創(chuàng)者所有,如需轉(zhuǎn)載請(qǐng)?jiān)谖闹凶⒚鱽碓醇白髡呙帧?/p>

免責(zé)聲明:本文系轉(zhuǎn)載編輯文章,僅作分享之用。如分享內(nèi)容、圖片侵犯到您的版權(quán)或非授權(quán)發(fā)布,請(qǐng)及時(shí)與我們聯(lián)系進(jìn)行審核處理或刪除,您可以發(fā)送材料至郵箱:service@tojoy.com