乔达;Android:如何设置日期格式,以便在用户';什么地方?

乔达;Android:如何设置日期格式,以便在用户';什么地方?,android,date,locale,jodatime,datetime-format,Android,Date,Locale,Jodatime,Datetime Format,我正在使用乔达图书馆。 我的要求是显示的日期字符串适合于用户的区域设置,即德国设备2014年12月12日和美国设备2014年12月12日。我发现我可以使用LocalDate的toString()方法 LocalDate localDate = LocalDate.now(); localDate.toString("yyyy/MM/dd", Locale.getDefault()); 如果我理解正确的话,我需要提供一个模式,但是我认为这会破坏指定区域设置的目的 有人能告诉我吗?我将此代码用于生

我正在使用乔达图书馆。 我的要求是显示的日期字符串适合于用户的区域设置,即德国设备2014年12月12日和美国设备2014年12月12日。我发现我可以使用LocalDate的toString()方法

LocalDate localDate = LocalDate.now();
localDate.toString("yyyy/MM/dd", Locale.getDefault());
如果我理解正确的话,我需要提供一个模式,但是我认为这会破坏指定区域设置的目的


有人能告诉我吗?

我将此代码用于生成小时和分钟的类似情况:

public String timeGenerateString( int iHour, int iMinute) {
  if( (iHour   < 0) || (iHour   > 24))  return "";
  if( (iMinute < 0) || (iMinute > 59))  return "";

  if( android.text.format.DateFormat.is24HourFormat( getApplicationContext()) == true)
    return  "" + String.format("%02d", iHour) + ":" + String.format("%02d", iMinute);
   else
    if( iHour >= 13)
      return  "" + String.format("%02d", (iHour - 12)) + ":" + String.format("%02d", iMinute) + " PM";
     else
      return  "" + String.format("%02d", iHour) + ":" + String.format("%02d", iMinute) + " AM";
}
public String timeGenerateString(int-iHour,int-iMinute){
如果((iHour<0)|(iHour>24))返回“”;
如果((iMinute<0)|(iMinute>59))返回“”;
if(android.text.format.DateFormat.is24HourFormat(getApplicationContext())==true)
返回“+String.format”(“%02d”,iHour)++”:“+String.format”(“%02d”,iMinute);
其他的
如果(i小时>=13)
返回“+String.format”(%02d),(iHour-12))+”:“+String.format”(%02d,iMinute)+“PM”;
其他的
返回“+String.format”(“%02d”,iHour)++”:“+String.format”(“%02d”,iMinute)+“AM”;
}

可能这通常适用于您。

我的解决方案,它将根据设备的区域设置设置显示日期的格式:

        DateTimeFormatter fmt = DateTimeFormat.mediumDate();
        String str = fmt.print(localDate);
        getGeburtsdatumEditText().setText(str);
对于本页面的未来访问者:现在,有这样一个通知:注意,从JavaSE8开始,用户被要求迁移到Java.time(JSR-310)——JDK的核心部分,它取代了这个项目。您可以使用
java.time
API进行检查。