日期格式:Android联系人生日周年纪念日

时间:2012-02-15 09:54:45

标签: android contacts

致力于联系生日和周年庆典:

我得到的详细信息和生日就像这个12.2.2012或12/2/2012或12-02-2012或2/12/12

问题:

  1. 所有三星手机的日期格式是否相同。如果是,日期格式是什么。

    (猜猜不适用于所有Android手机,因为生日日期以多种不同格式存储)

  2. 如何识别日期格式,如日期为2012年2月12日或2012年2月12日或任何其他日期字符串模式。是格式“yyyy-MM-dd”还是“MMM dd,yyyy”或其他? 例如:如果日期是“2012年2月12日”,则日期格式为“MMM dd yyyy”

3 个答案:

答案 0 :(得分: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;
        }
            }

答案 1 :(得分:2)

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

您希望在String中获取日期并在下面的代码中传递后的另一种方式

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

答案 2 :(得分:0)

日期存储为“YYYY-MM-DD”。

使用日期格式化程序类将其转换为您需要的任何格式。

如果您想要更新,请使用与您阅读时相同的格式。