2016-05-21 21 views
1

Ich möchte mit getRelativeTimeSpanString ein Datum anzeigen. Aber ich konnte Locale nicht auf diese Klasse setzen, um die Datumsbasis in meinem Gebietsschema anzuzeigen! Wie kann ich diese Klasse anpassen? ist es möglich, Gebietsschema als Parameter zu dieser Klasse hinzuzufügen?how to custom getRelativeTimeSpanString

final CharSequence relativeTimeSpanString = DateUtils.getRelativeTimeSpanString(createdTime.getTime()); 

auch stelle ich locale in meiner Anwendung:

Configuration configuration = new Configuration(); 
    if (!TextUtils.isEmpty(lang)) { 
     configuration.locale = new Locale(lang); 
    } else { 
     configuration.locale = Locale.getDefault(); 
    } 
    context.getResources().updateConfiguration(configuration, 
      context.getResources().getDisplayMetrics()); 

ist es eine Möglichkeit, dieses Problem zu lösen?

Endlich fand ich eine Lösung für dieses Problem!

I wurde diese Methode verwendet:

public static String getRelativeTimeSpanString(Context context, Date fromdate) { 

    long then; 
    then = fromdate.getTime(); 
    Date date = new Date(then); 

    StringBuffer dateStr = new StringBuffer(); 

    Calendar calendar = Calendar.getInstance(); 
    calendar.setTime(date); 
    Calendar now = Calendar.getInstance(); 

    int days = daysBetween(calendar.getTime(), now.getTime()); 
    int weeks= days/7; 
    int minutes = hoursBetween(calendar.getTime(), now.getTime()); 
    int hours = minutes/60; 
    if (days == 0) { 

     int second = minuteBetween(calendar.getTime(), now.getTime()); 
     if (minutes > 60) { 
      if (hours >= 1 && hours <= 24) { 
       dateStr.append(String.format("%s %s %s", 
         hours, 
         context.getString(R.string.hour) 
         ,context.getString(R.string.ago))); 
      } 
     }else { 
      if (second <= 10) { 
       dateStr.append(context.getString(R.string.now)); 
      } else if (second > 10 && second <= 30) { 
       dateStr.append(context.getString(R.string.few_seconds_ago)); 
      } else if (second > 30 && second <= 60) { 
       dateStr.append(String.format("%s %s %s", 
         second, 
         context.getString(R.string.seconds) 
         ,context.getString(R.string.ago))); 
      } else if (second >= 60 && minutes <= 60) { 
       dateStr.append(String.format("%s %s %s", 
         minutes, 
         context.getString(R.string.minutes) 
         ,context.getString(R.string.ago))); 
      } 
     } 
    } else 

    if (hours > 24 && days < 7) { 
     dateStr.append(String.format("%s %s %s", 
       days, 
       context.getString(R.string.days) 
       ,context.getString(R.string.ago))); 
    }else if(weeks == 1){ 
     dateStr.append(String.format("%s %s %s", 
       weeks, 
       context.getString(R.string.weeks) 
       ,context.getString(R.string.ago))); 
    } 
    else { 
     /** 
     * make formatted createTime by languageTag("fa") 
     * 
     * @return 
     */ 
     return SimpleDateFormat.getDateInstance(SimpleDateFormat.LONG,new Locale("fra")) 
       .format(date).toUpperCase(); 
    } 

    return dateStr.toString(); 
} 

public static int minuteBetween(Date d1, Date d2) { 
    return (int) ((d2.getTime() - d1.getTime())/android.text.format.DateUtils.SECOND_IN_MILLIS); 
} 

public static int hoursBetween(Date d1, Date d2) { 
    return (int) ((d2.getTime() - d1.getTime())/android.text.format.DateUtils.MINUTE_IN_MILLIS); 
} 

public static int daysBetween(Date d1, Date d2) { 
    return (int) ((d2.getTime() - d1.getTime())/android.text.format.DateUtils.DAY_IN_MILLIS); 
} 

und ich eingestellte Datum als Parameter an diese Methode:

return getRelativeTimeSpanString(context,this.createdTime); 

diese Rückkehr Zeichenfolge nach Ort, wie ich will!

Antwort

0

Ausprobieren Verwenden Sie diesen Code:

Resources res = context.getResources(); 
DisplayMetrics dm = res.getDisplayMetrics(); 
android.content.res.Configuration conf = res.getConfiguration(); 
conf.locale = new Locale("fa"); 
res.updateConfiguration(conf, dm); 

final CharSequence relativeTimeSpanString = DateUtils.getRelativeTimeSpanString(oldDate, createdTime.getTime(), 
    DateUtils.FORMAT_ABBREV_ALL); 
+1

Ich möchte zeigen Zeitspanne Zeichenfolge von meiner Sprache. DateUtils.FORMAT_ABBREV_ALL dient zur Abkürzung der Zeit! –