Date format : Android Contacts Birthday Anniversary

孤街浪徒 提交于 2019-12-10 19:23:37

问题


Working on Contact birthday and Anniversary:

I get details and birthday like this 12.2.2012 or 12/2/2012 or 12-02-2012 or 2/12/12

Question:

  1. Is the date Format same across all Samsung Phones. IF yes what is the date format.

    (Guess won't work on all Android phones as birthday dates are stored in many different format)

  2. How to identify the date format like if the date is 12.2.2012 or Feb 12 2012 or any other date string pattern. Is it of format "yyyy-MM-dd" or "MMM dd, yyyy" or any other? ex: if date is "Feb 12 2012" then date format is "MMM dd yyyy"


回答1:


The date is stored as "YYYY-MM-DD".

Use the date formater class to convert it into any format you need.

When you want to update put it in the same format as you have read.




回答2:


Unfortunately it seems different apps/vendors use different formats. My solution for this is to try parsing different formats until i either find the right one or give up.

Here is some sample code:

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;
        }
            }



回答3:


Use DateFormat.getDateInstance(int style, Locale locale) instead of creating your own patterns with SimpleDateFormat.

Another way that u want to get date in String and after pass in below code

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); 


来源:https://stackoverflow.com/questions/9291176/date-format-android-contacts-birthday-anniversary

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!