Подтвердить что ты не робот

Получить предпочтительную строку формата даты в системе Android

Кто-нибудь знает, как получить строку формата, используемую системой при форматировании даты, используя

DateFormat.getLongDateFormat(Context context).format(Date date)
4b9b3361

Ответ 1

Я написал метод для обнаружения этой строки формата. (работа для моего случая).

public static String getDateFormat(Context context){
        // 25/12/2013
        Calendar testDate = Calendar.getInstance();
        testDate.set(Calendar.YEAR, 2013);
        testDate.set(Calendar.MONTH, Calendar.DECEMBER);
        testDate.set(Calendar.DAY_OF_MONTH, 25);

        Format format = android.text.format.DateFormat.getDateFormat(context);
        String testDateFormat = format.format(testDate.getTime());
        String[] parts = testDateFormat.split("/");
        StringBuilder sb = new StringBuilder();
        for(String s : parts){
            if(s.equals("25")){
                sb.append("dd/");
            }
            if(s.equals("12")){
                sb.append("MM/");
            }
            if(s.equals("2013")){
                sb.append("yyyy/");
            }
        }
        return sb.toString().substring(0, sb.toString().length()-1);
    }

Пожалуйста, проверьте ответ Mark Melling ниже fooobar.com/questions/216305/..., чтобы иметь лучшее решение. Шахта была просто хаком давным-давно.

Ответ 2

Чтобы получить шаблон формата даты, вы можете сделать:

Format dateFormat = android.text.format.DateFormat.getDateFormat(getApplicationContext());
String pattern = ((SimpleDateFormat) dateFormat).toLocalizedPattern();

Ответ 3

В API есть статический метод, который можно вызвать следующим образом:

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

Об этом больше обсуждается здесь.

Ответ 4

на основе вышеприведенного ответа:

String pattern = Settings.System.getString(getActivity().getContentResolver(),
Settings.System.DATE_FORMAT);
                String format;
                if (pattern.indexOf("d")<pattern.indexOf("M"))
                    format = "d/M";
                else
                    format = "M/d";
                SimpleDateFormat df = new SimpleDateFormat(format);

а затем используйте SimpleDateFormat для форматирования ваших объектов Date. Это работает для меня.

Ответ 5

SimpleDateFormat

Я использую SimpleDateFormat без специального шаблона, чтобы получить фактическую дату и время в формате предпочтительный из системы:

public static String getFormattedDate() {
    Calendar c = Calendar.getInstance();
    SimpleDateFormat df = new SimpleDateFormat(); //called without pattern
    return df.format(c.getTime());
}

возвращает

  • 13.01.15 11:45
  • 1/13/15 10:45 AM
  • ...

Ответ 6

Вы можете использовать это:

private static DateFormat mDateFormat;
private static DateFormat mTimeFormat;

mDateFormat = android.text.format.DateFormat.getDateFormat(this);
mTimeFormat = android.text.format.DateFormat.getTimeFormat(this);

public static String getSystemDateFormat() {
    return ((SimpleDateFormat) mDateFormat).toPattern();
}

public static String getSystemTimeFormat() {
    return ((SimpleDateFormat) mTimeFormat).toPattern();
}

public static String getSystemDateTimeFormat() {
    return getSystemDateFormat() + " " + getSystemTimeFormat();
}

Ответ 7

В соответствии с документацией DateFormat:

Чтобы отформатировать дату для текущего языка, используйте один из статических factoryМетоды:

myString = DateFormat.getDateInstance().format(myDate);

И отформатировать его для другого языкового стандарта:

myString = DateFormat.getDateInstance(DateFormat.LONG, Locale.FRANCE).format(myDate);

Ответ 8

String shortDateFormat  = Settings.System.getString(context.getContentResolver(), Settings.System.DATE_FORMAT);