在android上基于用户语言环境的date格式

我想根据用户区域设置显示出生date。 在我的应用程序中,我的一个领域是出生date,当前格式为dd / mm / yyyy。 所以如果用户改变他的语言环境,date格式也应该相应地改变。 任何指针或代码示例将真正帮助我解决这个问题。

Solutions Collecting From Web of "在android上基于用户语言环境的date格式"

您可以使用根据用户区域设置格式化date的DateFormat类。

例:

String dateOfBirth = "26/02/1974"; SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy"); Date date = null; try { date = sdf.parse(dateOfBirth); } catch (ParseException e) { // handle exception here ! } java.text.DateFormat dateFormat = android.text.format.DateFormat.getDateFormat(context); String s = dateFormat.format(date); 

您可以使用不同的方法getLongDateFormatgetMediumDateFormat具体取决于您希望拥有的详细程度。

要根据语言环境更改date格式,以下代码对我有用:

  String dateOfBirth = "26/02/1974"; SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy"); Date date = null; try { date = sdf.parse(dateOfBirth); } catch (ParseException e) { // handle exception here ! } String myString = DateFormat.getDateInstance(DateFormat.SHORT).format(date); 

然后,当您更改区域设置时,date格式将根据此更改。 有关date模式的更多信息: http : //docs.oracle.com/javase/tutorial/i18n/format/dateFormat.html

Android API提供简单的方式来显示本地化的date格式。 以下代码工作。

 public class FileDateUtil { public static String getModifiedDate(long modified) { return getModifiedDate(Locale.getDefault(), modified); } public static String getModifiedDate(Locale locale, long modified) { SimpleDateFormat dateFormat = null; if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR2) { dateFormat = new SimpleDateFormat(getDateFormat(locale)); } else { dateFormat = new SimpleDateFormat("MMM/dd/yyyy hh:mm:ss aa"); } return dateFormat.format(new Date(modified)); } @TargetApi(Build.VERSION_CODES.JELLY_BEAN_MR2) public static String getDateFormat(Locale locale) { return DateFormat.getBestDateTimePattern(locale, "MM/dd/yyyy hh:mm:ss aa"); } } 

你可以检查下面的代码。

 String koreaData = FileDateUtil.getModifiedDate(Locale.KOREA, System.currentTimeMillis()); String franceData = FileDateUtil.getModifiedDate(Locale.FRENCH, System.currentTimeMillis()); String defaultData = FileDateUtil.getModifiedDate(Locale.getDefault(), System.currentTimeMillis()); String result = "Korea : " + koreaData + System.getProperty("line.separator"); result += "France : " + franceData + System.getProperty("line.separator"); result += "Default : " + defaultData + System.getProperty("line.separator"); tv.setText(result); 

像…一样简单

对于date+时间

 DateFormat format = DateFormat.getDateTimeInstance(DateFormat.DEFAULT, DateFormat.SHORT, Locale.getDefault()); 

就date而言

 DateFormat format = DateFormat.getDateTimeInstance(DateFormat.SHORT, Locale.getDefault());