1. 程式人生 > >java中date和時間戳相互轉換以及獲取前一個小時的時間

java中date和時間戳相互轉換以及獲取前一個小時的時間

1、時間戳是指檔案屬性裡的建立、修改、訪問時間。 

數字時間戳技術是數字簽名技術一種變種的應用。在電子商務交易檔案中,時間是十分重要的資訊。在書面合同中,檔案簽署的日期和簽名一樣均是十分重要的防止檔案被偽造和篡改的關鍵性內容。數字時間戳服務(DTS:digital time stamp service)是網上電子商務安全服務專案之一,能提供電子檔案的日期和時間資訊的安全保護。

編輯本段組成部分

  時間戳(time-stamp)是一個經加密後形成的憑證文件,它包括三個部分:  

  (1)需加時間戳的檔案的摘要(digest);  

  (2)DTS收到檔案的日期和時間;  

  (3)DTS的數字簽名。  

  一般來說,時間戳產生的過程為:使用者首先將需要加時間戳的檔案用Hash編碼加密形成摘要,然後將該摘要傳送到DTS,DTS在加入了收到檔案摘要的日期和時間資訊後再對該檔案加密(數字簽名),然後送回使用者。  

  書面簽署檔案的時間是由簽署人自己寫上的,而數字時間戳則不然,它是由認證單位DTS來加的,以DTS收到檔案的時間為依據。

2、時間戳轉化為Date(or String)

  1. //時間戳轉化為Sting或Date
  2.     SimpleDateFormat format =  newSimpleDateFormat("yyyy-MM-dd HH:mm:ss");  
  3.     Long time=newLong(445555555
    );  
  4.     String d = format.format(time);  
  5.     Date date=format.parse(d);  
  6.     System.out.println("Format To String(Date):"+d);  
  7.     System.out.println("Format To Date:"+date);  

 執行結果:

       Format To String(Date):1970-01-06 11:45:55

Format To Date:Tue Jan 06 11:45:55 CST 1970

3、Date(or String)轉化為時間戳

  1. //Date或者String轉化為時間戳
  2.     SimpleDateFormat format =  newSimpleDateFormat("yyyy-MM-dd HH:mm:ss");  
  3.     String time="1970-01-06 11:45:55";  
  4.     Date date = format.parse(time);  
  5.     System.out.print("Format To times:"+date.getTime());  

執行結果:

     Format To times:445555000

4、注意

  定義SimpleDateFormat時newSimpleDateFormat("yyyy-MM-dd HH:mm:ss");裡面字串頭尾不能有空格,有空格那是用轉換時對應的時間空格也要有空格(兩者是對應的),比如:

  1. //Date或者String轉化為時間戳
  2.       SimpleDateFormat format =  newSimpleDateFormat(" yyyy-MM-dd HH:mm:ss ");  
  3.       String time="1970-01-06 11:45:55";  
  4.       Date date = format.parse(time);  
  5.       System.out.print("Format To times:"+date.getTime());  

執行結果(報錯):

Exception in thread "main"java.text.ParseException: Unparseable date: "1970-01-06 11:45:55"

改正:

  //Date或者String轉化為時間戳

  1. SimpleDateFormat format =  newSimpleDateFormat(" yyyy-MM-dd HH:mm:ss ");  
  2. String time=" 1970-01-06 11:45:55 ";//注:改正後這裡前後也加了空格
  3. Date date = format.parse(time);  
  4. System.out.print("Format To times:"+date.getTime());  

  執行結果:

    Format To times:445555000

一、java中Date類中的getTime()是獲取時間戳的,java中生成的時間戳精確到毫秒級別,而unix中精確到秒級別,所以通過java生成的時間戳需要除以1000。
二、下面是java程式碼

  1. import java.text.ParseException;  
  2. import java.text.SimpleDateFormat;  
  3. import java.util.Date;  
  4. publicclass Baidu {  
  5. /** 
  6. * @param args 
  7. */
  8. publicstaticvoid main(String[] args) {  
  9. try {  
  10. String time = "2011/07/29 14:50:11";  
  11. Date date = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss").parse(time);  
  12. long unixTimestamp = date.getTime()/1000;  
  13. System.out.println(unixTimestamp);  
  14. catch (ParseException e) {  
  15. e.printStackTrace();  
  16. }  
  17. }  
  18. }  
最後是獲取特定時間或當前時間的前一個小時的時間:
//時間和時間戳相互轉換
			SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
			String t = "2017-03-22 11:16:36"; 
			Date date = df.parse(t);
			long time1 = (date.getTime()/1000) - 3600;
			System.out.println("((((((((((((((" + t);
			System.out.println(">>>>>>>>>>>>>>" + date.getTime());
			System.out.println("{{{{{{{{{{{{{{" + date.getTime()/1000);
			System.out.println("==============" + time1);
			long w = (time1 * 1000);
			String date1 = df.format(w);
			System.out.println("??????????????" + date1);