Кто-нибудь знает, как получить строку формата, используемую системой при форматировании даты, используя
DateFormat.getLongDateFormat(Context context).format(Date date)
Кто-нибудь знает, как получить строку формата, используемую системой при форматировании даты, используя
DateFormat.getLongDateFormat(Context context).format(Date date)
Я написал метод для обнаружения этой строки формата. (работа для моего случая).
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/..., чтобы иметь лучшее решение. Шахта была просто хаком давным-давно.
Чтобы получить шаблон формата даты, вы можете сделать:
Format dateFormat = android.text.format.DateFormat.getDateFormat(getApplicationContext());
String pattern = ((SimpleDateFormat) dateFormat).toLocalizedPattern();
В API есть статический метод, который можно вызвать следующим образом:
Format dateFormat = android.text.format.DateFormat.getDateFormat(getApplicationContext());
Об этом больше обсуждается здесь.
на основе вышеприведенного ответа:
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. Это работает для меня.
Я использую SimpleDateFormat без специального шаблона, чтобы получить фактическую дату и время в формате предпочтительный из системы:
public static String getFormattedDate() {
Calendar c = Calendar.getInstance();
SimpleDateFormat df = new SimpleDateFormat(); //called without pattern
return df.format(c.getTime());
}
возвращает
Вы можете использовать это:
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();
}
В соответствии с документацией DateFormat:
Чтобы отформатировать дату для текущего языка, используйте один из статических factoryМетоды:
myString = DateFormat.getDateInstance().format(myDate);
И отформатировать его для другого языкового стандарта:
myString = DateFormat.getDateInstance(DateFormat.LONG, Locale.FRANCE).format(myDate);
String shortDateFormat = Settings.System.getString(context.getContentResolver(), Settings.System.DATE_FORMAT);