获取Android系统的首选date格式string

是否有人知道如何使用格式化date时获取系统使用的格式string

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

Solutions Collecting From Web of "获取Android系统的首选date格式string"

我写了一个方法来检测这个格式的string。 (为我的案件工作)。

 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的回答https://stackoverflow.com/a/18982842/945808以获得更好的解决scheme。 我很久以前就是一个黑客。

要获得date格式模式,你可以这样做:

 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

我使用SimpleDateFormat 没有自定义模式来从系统获得首选格式的实际date和时间:

 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

你可以使用这个:

 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文档:

要格式化当前语言环境的date,请使用以下静态工厂方法之一:

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