Формат даты: Android Контакты День рождения Юбилей - PullRequest
3 голосов
/ 15 февраля 2012

Работаем над контактом день рождения и юбилей:

Я получаю детали и день рождения, как это 12.2.2012 или 12/2/2012 или 12-02-2012 или 2/12/12

Вопрос:

  1. Является ли формат даты одинаковым для всех телефонов Samsung. Если да, то какой формат даты.

    (думаю, не будет работать на всех телефонах Android, поскольку даты рождения хранятся в разных форматах)

  2. Как определить формат даты, например, если дата 12.2.2012 или 12 февраля 2012 или любой другой шаблон строки даты. Это формат "гггг-ММ-дд" или "МММ дд, гггг" или любой другой? Например: если дата «12 февраля 2012», то формат даты - «МММ дд гггг»

Ответы [ 3 ]

3 голосов
/ 05 сентября 2012

К сожалению, кажется, что разные приложения / поставщики используют разные форматы. Мое решение для этого состоит в том, чтобы попытаться проанализировать различные форматы, пока я не найду подходящий или не сдамся.

Вот пример кода:

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;
        }
            }
2 голосов
/ 15 февраля 2012

Используйте 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); 
0 голосов
/ 15 февраля 2012

Дата сохраняется как «ГГГГ-ММ-ДД».

Используйте класс datemater, чтобы преобразовать его в любой нужный вам формат.

Если вы хотите обновить, поместите его в тот же формат, что вы прочитали.

...