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

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

  • 如何在sqlite数据库中添加date
  • 在Android应用程序中获取每个联系人的生日
  • 使用SimpleDateFormat分别获取日,月和年
  • 如何在Android中添加date
  • android.database.sqlite.SQLiteDatabase.rawQuery()不使用SQLite datetime()函数更新DATETIME列
  • 在Android中将时间戳转换为当前date
  • 从GregorianCalendar获取一周的一天
  • 从Datepicker将Android格式的date转换为MM-DD-YYYY
  • 您可以使用根据用户区域设置格式化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());