程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> JAVA綜合教程 >> SimpleDateFormat Joda-Time Apache-DateUtils 解析ISO8601日期字符串的異同,jodatime

SimpleDateFormat Joda-Time Apache-DateUtils 解析ISO8601日期字符串的異同,jodatime

編輯:JAVA綜合教程

SimpleDateFormat Joda-Time Apache-DateUtils 解析ISO8601日期字符串的異同,jodatime


廢話少說,直接上代碼:

導入部分:

1 1 import java.util.Date; 2 2 import java.text.SimpleDateFormat; 3 3 import org.apache.commons.lang3.time.DateUtils; 4 4 import org.joda.time.DateTime; 5 5 import org.joda.time.format.DateTimeFormat; View Code

 轉換部分

1 String datestr1 = "2016-06-07T14:08:09.235+08:00";  //ISO8601 2 String datestr2 = "2016-06-07 14:08:09";        //Without Millis 3 String datestr3 = "2016-06-07 14:08:09.235";      //With Millis 4 5 //Joda Time 6 Date date0 = new DateTime(datestr1).toDate(); 7 Date date1 = DateTimeFormat.forPattern("yyyy-MM-dd'T'HH:mm:ss.SSSZZ").parseDateTime(datestr1).toDate(); 8 Date date2 = DateTimeFormat.forPattern("yyyy-MM-dd HH:mm:ss").parseDateTime(datestr2).toDate(); 9 Date date3 = DateTimeFormat.forPattern("yyyy-MM-dd HH:mm:ss.SSS").parseDateTime(datestr3).toDate(); 10 11 //JDK 12 date1 = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSXXX").parse(datestr1); //XXX means Timezone for Java SimpleDateFormat 13 date2 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse(datestr2); 14 date3 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS").parse(datestr3); 15 16 //Apache 17 date1 = DateUtils.parseDate(datestr1, "yyyy-MM-dd'T'HH:mm:ss.SSSZZ"); 18 date2 = DateUtils.parseDate(datestr2, "yyyy-MM-dd HH:mm:ss"); 19 date3 = DateUtils.parseDate(datestr3, "yyyy-MM-dd HH:mm:ss.SSS"); View Code

測試中使用了三種常見格式的日期字符串,其中包括Json轉換默認的ISO8601格式。經測試SimpleDateFormat Joda-Time Apache-DateUtils三種方式都能實現對這三種日期格式的解析,其中:

1. SimpleDateFormat 解析ISO8601的格式串為 "yyyy-MM-dd'T'HH:mm:ss.SSSXXX",其中XXX表示時區,與通用的ZZ不一樣。

2. Joda-Time 默認格式就是ISO8601,故可以直接用 new DateTime(...) 的方式直接解析ISO8601日期串,當然也可以用日期格式串來解析,用日期格式串解析日期的代碼略長。

3. Apache-DateUtils  解析ISO8601的格式串和Joda一樣是 "yyyy-MM-dd'T'HH:mm:ss.SSSZZ",解析代碼相對Joda-Time更簡潔。

吐槽一下:SimpleDateFormat用XXX來表示時區真是太變態了,浪費我半天時間才搞定,特此記錄。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved