2011-12-27 206 views
2

在Android中,每個事件(例如生日和週年紀念日)都以字符串格式保存,例如, 「2011-12-24」。將Android的日期字符串轉換爲日期對象

這是至少我的手機的情況。如果其他手機的日曆與公曆不同,則其他手機可能會以其他格式存儲這些日期。

即使是設置了公曆日曆的手機,也有日期字符串,包括小時,分鐘和不帶。我得到這樣一個日期字符串,當我查詢聯繫人表的事件:

cursor.getString(cursor.getColumnIndex(ContactsContract.CommonDataKinds.Event.ST‌​ART_DATE)) 

這導致(例如):

「2011-12-14」或「2011-12-24T00: 00:00Z「

您可以看到有很多不同的可能格式。爲了計算日期,我需要將它們從String轉換爲Date對象,不需要我嗎?

我該怎麼做?

PS:我知道有面向Java日期對象解析函數:

DateFormat myDateFormat = new SimpleDateFormat("dd/MM/yy"); 
Date tempDate = myDateFormat.parse("24/12/2011"); 

但在Android的,我不知道哪種格式我將要面臨的,是吧?

回答

3

Android使用日期對象。任何時候你需要解析一個字符串的日期是因爲這個日期已經被序列化了,很可能是在一個文件中。在這種情況下,你會知道使用的格式。 Date對象用在首選項中,幾乎在任何地方都可以使用date對象,我認爲這涉及到共享服務,活動等等。這意味着,幾乎從不需要從日期解析字符串,除非像我說的你正在使用序列化的源代碼,從Web服務中讀取它等。 如果你可以告訴我們你的場景,你可能會得到更具體的答案。

,您就能獲得當前設置的日期格式是這樣的:

DateFormat dateFormat = android.text.format.DateFormat.getDateFormat(getApplicationContext()); 
+0

謝謝你的好,樂於助人的答案!我正在查詢聯繫人表中的一個事件:cursor.getString(cursor.getColumnIndex(ContactsContract.CommonDataKinds.Event.START_DATE)) – caw 2011-12-27 05:52:12

+0

...這是我得到一個日期字符串形式,例如, 「2011-12-24T00:00:00Z」。我怎樣才能得到日期作爲日期對象?沒有方法「cursor.getDate()」... ... – caw 2011-12-28 00:48:26

+0

你可以在這種情況下解析它。此外,無論設置何種語言,此日期格式都是相同的,因此您可以放心地假設。 – 2011-12-28 01:00:50

0
import java.text.ParseException; 
import java.text.SimpleDateFormat; 
import java.util.Date; 

SimpleDateFormat myDateFormat = new SimpleDateFormat("dd/MM/yy"); 
     Date tempDate; 
     try { 
      tempDate = myDateFormat.parse("24/12/2011"); 
       long milliseconds=tempDate.getTime(); 
       Toast.makeText(getApplicationContext(), milliseconds+"", 1).show(); 
     } catch (ParseException e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
     } 
相關問題