使用SimpleDateFormat 格式化输出日期与
使用Calendar 格式化输出日期
在耗时上的对比如下
测试软件平台
win 7,CUP T4200,内存 2G,
eclipse 3.5,
android sdk1.5
测试硬件平台
T Mobile G1,

SimpleDateFormat的输出要比Calendar 慢2倍以上
SimpleDateFormat的格式有限制
比如想输出 13点45分 表示成13H45M 就很难表示了
定义成HHHMMM输出013045了
Calendar 的不便之处是 如果我想输出比较好的格式
比如 9点08分
那么0占位就需要自己写一下逻辑啦!

 
 
  
  1. view plaincopy to clipboardprint?  
  2.     /**    
  3.      * 通过milliseconds得到一个格式为"yyyy-mm-dd"的日期,比如2009-10-29    
  4.      * SimpleDateFormat方式模拟器耗时30毫秒,真机13毫秒    
  5.      * Calendar方式模拟器耗时12毫秒,真机2毫秒    
  6.      */    
  7.     public static String getDate(String milliseconds)     
  8.     {     
  9.         long mil = Long.parseLong(milliseconds);     
  10.         return getDate(mil);     
  11.     }     
  12.     
  13.     public static String getDate(long milliseconds)     
  14.     {     
  15.         Date date = new Date(milliseconds);     
  16. //      SimpleDateFormat formatter = new SimpleDateFormat("yyyy年MM月dd日");     
  17. //      return formatter.format(date);     
  18.              
  19.         Calendar c = Calendar.getInstance();     
  20.         c.setTime(date);     
  21.         return c.get(c.YEAR)+"-"+(c.get(c.MONTH)+1)+"-"+c.get(c.DAY_OF_MONTH);//月份是从0开始的,要+1     
  22.     }     
  23.          
  24.     /**    
  25.      * 通过milliseconds得到一个格式为"HH:mm"的时间,比如15:25    
  26.      * SimpleDateFormat方式耗时40毫秒,真机16毫秒    
  27.      * Calendar方式模拟器耗时12毫秒,真机4毫秒    
  28.      */    
  29.     public static String getTime(String milliseconds)     
  30.     {     
  31.         long mil = Long.parseLong(milliseconds);     
  32.         return getTime(mil);     
  33.     }     
  34.     
  35.     public static String getTime(long milliseconds)     
  36.     {     
  37.         Date date = new Date(milliseconds);     
  38. //      SimpleDateFormat formatter = new SimpleDateFormat("HH:mm");//H为占位符如多了就会添0补位     
  39. //      return formatter.format(date);     
  40.              
  41.         Calendar c = Calendar.getInstance();     
  42.         c.setTime(date);     
  43.         return c.get(c.HOUR_OF_DAY)+":"+c.get(c.MINUTE);     
  44.     }     
  45.     
  46.     /**    
  47.      * 得到时间,如果是今天的时间,就显示TIME,如果是过去的时间就显示DATE    
  48.      * SimpleDateFormat方式耗时70毫秒,真机35毫秒    
  49.      * Calendar方式模拟器耗时20毫秒,真机7毫秒    
  50.      */    
  51.     public static String getDateORTime(String milliseconds)     
  52.     {     
  53.         String today = getDate(System.currentTimeMillis());     
  54.         if( today.equals( getDate(milliseconds) ) )//时间就是今天的     
  55.             return getTime(milliseconds);     
  56.         else    
  57.             return getDate(milliseconds);     
  58.     }   

结论:绝大部分情况Calendar 都能应付,考虑速度问题,就用Calendar 啦!

声明:该数据仅供数量级上的参考,不做学术凭证。