2012-02-15 64 views
3

上跟生日和紀念日工作:日期格式:Android的聯繫人生日

我得到的信息和生日這樣的2012年2月12日或2012年12月2日或2012年12月2日或12年2月12日

問:

  1. 是日期格式在所有三星手機一樣。如果是,什麼是日期格式。

    (猜不會在所有Android手機工作作爲生日日期都存儲在許多不同的格式)

  2. 如何識別日期格式一樣,如果日期是2012年12月2日或2012年2月12日或其他任何日期字符串模式。格式爲「yyyy-MM-dd」或「MMM dd,yyyy」還是其他格式? 例如:如果日期是 「2012年2月12日」,則日期格式爲 「MMM DD YYYY」

回答

0

的日期存儲爲 「YYYY-MM-DD」。

使用日期formater類將其轉換爲您需要的任何格式。

想要更新時,請將其放入與您已閱讀的格式相同的格式。

2

使用DateFormat.getDateInstance(int style, Locale locale)而不是使用SimpleDateFormat創建自己的模式。

,美想日期字符串和傳球后在下面的代碼

String dateStr = "04/05/2010"; 

SimpleDateFormat curFormater = new SimpleDateFormat("dd/MM/yyyy"); 
Date dateObj = curFormater.parse(dateStr); 
SimpleDateFormat postFormater = new SimpleDateFormat("MMMM dd, yyyy"); 

String newDateStr = postFormater.format(dateObj); 
3

另一種方法不幸的是,似乎不同的應用程序/供應商使用不同的格式。我的解決方案是嘗試解析不同的格式,直到我找到正確的或放棄。

下面是一些示例代碼:

public static final SimpleDateFormat[] birthdayFormats = { 
    new SimpleDateFormat("yyyy-MM-dd"), 
    new SimpleDateFormat("yyyyMMdd"), 
    new SimpleDateFormat("yyyy.MM.dd"), 
    new SimpleDateFormat("yy-MM-dd"),, 
    new SimpleDateFormat("yyMMdd"), 
    new SimpleDateFormat("yy.MM.dd") 
    new SimpleDateFormat("yy/MM/dd"), 
    new SimpleDateFormat("MM-dd"), 
    new SimpleDateFormat("MMdd"), 
    new SimpleDateFormat("MM/dd"), 
    new SimpleDateFormat("MM.dd"), 
}; 
..... 
    Date birthday = null; 
     for (SimpleDateFormat f : birthdayFormats) { 
     try { 
       birthday = f.parse(birthdaystr); 
       if (birthday!=null) { 
         contact.setBirthday(birthday); 
         break; 
       } 
     } catch (Exception e) { 
       continue; 
     } 
      }