【轉】使用DateFormat把時間長度格式化為"時:分:秒"格式--不錯


原文網址:http://ssd910.blog.163.com/blog/static/238767972010112214114201/

經常在系統中顯示時間長度,基本上每次都是顯示秒數,客戶覺得按時分秒("HH:mm:ss")的格式顯示比較明了,一般開發人員都是自己去計算小時是多少?分鍾是多少...,其實可以用DateFormat來格式這個顯示方式。示例代碼如下:示例:

計算某人總的登陸時間
登陸時間是10:12:14
結束時間是15:20:35
示例代碼:
  Calendar c1 = new GregorianCalendar(2007, 1, 16, 10, 12, 14);
  Calendar c2 = new GregorianCalendar(2007, 1, 16, 15, 20, 35);

  SimpleDateFormat formatter= new SimpleDateFormat("HH:mm:ss");

  // 設置格式化器的時區為格林威治時區,否則格式化的結果不對,中國的時間比格林威治時間早8小時,比如0點會被格式化為8:00
  formatter.setTimeZone(TimeZone.getTimeZone("GMT+0:00"));

  long l = c2.getTimeInMillis() - c1.getTimeInMillis();
  System.out.println("秒數:" + l);
  System.out.println("時分秒:" + formatter.format(l));

輸出結果:
毫秒數:18501000
時分秒:05:08:21

注銷設置TimeZone,輸出結果:
毫秒數:18501000
時分秒:13:08:21

上面的代碼不能格式化年、月、日的長度,只能是時間,因為java的時間是從1970年1月1日開始的。

若需要年月日,則只能自己去年月日字段拼裝,如:
        StringBuffer result = new StringBuffer();
        // 添加年-月-日,可以自己判斷補0,比如年份為4位獲兩位,月份是兩位,天數是兩位
        result.append(calendar.get(Calendar.YEAR) - 1970).append("-");
        result.append(calendar.get(Calendar.MONTH)).append("-");
        result.append(calendar.get(Calendar.DAY_OF_MONTH) - 1).append(" ");

Android SimpleDateFormat轉換時間 12,24時間格式

原文網址:http://blog.csdn.net/zz_mm/article/details/9302965

在使用SimpleDateFormat時格式化時間的 yyyy.MM.dd 為年月日而如果希望格式化時間為12小時制的,則使用hh:mm:ss 如果希望格式化時間為24小時制的,則使用HH:mm:ss

代碼如下:

  1. Date d = new Date();  
  2.         SimpleDateFormat ss = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");//12小時制  
  3.         System.out.println(ss.format(d));  
  4.   
  5.         Date date = new Date();  
  6.         SimpleDateFormat sdformat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");//24小時制  
  7.         String LgTime = sdformat.format(date);  
  8.         System.out.println(LgTime);  
  9.   
  10.   
  11. //結果為  
  12. 2008-05-28 01:32:54  
  13. 2008-05-28 13:32:54  

Android Java計算時間差

原文網址:http://www.ztyhome.com/android-java-shijiancha/

Android開發或者Java學習中,經常要求兩個時間差

比如說:

現在是 :2004-03-26 13:31:40

過去是:2004-01-02 11:30:24

我現在要獲得兩個日期差,差的形式為:XX天XX小時XX分XX秒

這前后時間可能是機器生成的,也可能是人工輸入的,那么我們可以通過下面代碼來實現

DateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
2  
3 try
4 {
5    Date d1 = df.parse("2004-03-26 13:31:40");
6    Date d2 = df.parse("2004-01-02 11:30:24");
7    long diff = d1.getTime() - d2.getTime();//這樣得到的差值是微秒級別
8  
9    long days = diff / (1000 * 60 * 60 * 24);
10    long hours = (diff-days*(1000 * 60 * 60 * 24))/(1000* 60 * 60);
11    long minutes = (diff-days*(1000 * 60 * 60 * 24)-hours*(1000* 60 * 60))/(1000* 60);
12  
13    System.out.println(""+days+"天"+hours+"小時"+minutes+"分");
14 }
15 catch (Exception e)
16 {
17 }

在Android開發中,你可能需要記錄系統運行的時間長度,那么你可以在系統啟動時記錄下時間,然后在你想結束的時候再記錄一次時間,兩次時間記錄值作差。具體可參考Java、Android超精確測量代碼執行時間
得到的差值也是微秒級別的,利用類似的方法,得到秒、分、時、天即可。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM