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

Предупреждение SimpleDateFormat Чтобы получить локальное форматирование, используйте getDateInstance(), getDateTimeInstance() или getTimeInstance(),

Нужно ли беспокоиться об этом предупреждении? Что делать, если я игнорирую предупреждение?
Что означает это предупреждение:
Чтобы получить локальное форматирование, используйте getDateInstance(), getDateTimeInstance() или getTimeInstance() или используйте new SimpleDateFormat(String template, Locale locale) с, например, Locale.US для ASCII дат.
Во второй строке приведенного ниже кода. Приложение отлично работает с кодом. Я хотел показать дату, например, 19 Nov 2014.

public static String getFormattedDate(long calendarTimeInMilliseconds) {
    SimpleDateFormat sdfDate = new SimpleDateFormat("d MMM yyyy");  //ON THIS LINE
    Date now = new Date();
    now.setTime(calendarTimeInMilliseconds);
    String strDate = sdfDate.format(now);
    return strDate;
}

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

4b9b3361

Ответ 1

В настоящее время вы используете конструктор SimpleDateFormat (String). Это подразумевает стандартную локаль, и, поскольку документация Locale сообщает вам, быть осторожным с языковым стандартом по умолчанию, поскольку неожиданный вывод может быть получен в различных системах.

Вместо этого вы должны использовать конструктор SimpleDateFormat (String, Locale). Он будет принимать дополнительный параметр - локаль, которую вы хотите использовать. Если вы хотите удостовериться, что вывод легко читается машиной (всегда выглядит одинаково, независимо от фактического местоположения пользователя), вы можете выбрать Locale.US. Если вам не нужна обновленная работоспособность машины, вы можете явно указать, что она использует Locale.getDefault().

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

// for US
SimpleDateFormat sdfDate = new SimpleDateFormat("d MMM yyyy", Locale.US);

// or for default
SimpleDateFormat sdfDate = new SimpleDateFormat("d MMM yyyy",
        Locale.getDefault());

Ответ 2

Вы можете проигнорировать это, но предупреждение есть, чтобы сообщить, что даты могут неожиданно отображаться для пользователей, использующих другой язык. Если вы хотите форматировать формат в своем собственном языковом выражении, используйте Locale.US (или какой бы язык не соответствовал вашим требованиям к формату). В противном случае используйте один из методов getInstance() для локализованного форматирования.