如何为Android获取基于区域设置的短日期字符串?

时间:2014-06-18 03:44:38

标签: android date localization

我试图获取一个日期字符串,其中包含星期和月份的缩短形式,以及月份的日期。

例如,具有英语区域设置的用户会看到:

Jun Jun 17

并且具有德语区域设置的用户会看到:

狄。 17 Juni

我一直在查看android.text.format.DateFormat文档,getBestDateTimePattern(Locale locale, String skeleton)看起来可能有用,但它需要API 18+,所以我无法使用它。

有没有办法让这种基于用户当前语言环境的短格式?

4 个答案:

答案 0 :(得分:9)

好的,我想我终于弄明白了:

int flags = DateUtils.FORMAT_SHOW_DATE | 
            DateUtils.FORMAT_NO_YEAR | 
            DateUtils.FORMAT_ABBREV_ALL | 
            DateUtils.FORMAT_SHOW_WEEKDAY;

dateTextView.setText(DateUtils.formatDateTime(this, millis, flags));

对于英语语言环境,您会得到:

星期三,6月18日

对于德语区域设置,您将获得:

Mi。,18。Juni

对于法语区域设置,您会得到:

聚体。 18 juin

答案 1 :(得分:2)

您应该使用getMeduimDateFormat(Context),这符合当前的区域设置和用户的偏好。

答案 2 :(得分:1)

尝试以下代码: -

public class DateFormatDemoSO {
  public static void main(String args[]) {
    int style = DateFormat.MEDIUM;
    //Also try with style = DateFormat.FULL and DateFormat.SHORT
    Date date = new Date();
    DateFormat df;
    df = DateFormat.getDateInstance(style, Locale.UK);
    System.out.println("United Kingdom: " + df.format(date));
    df = DateFormat.getDateInstance(style, Locale.US);
    System.out.println("USA: " + df.format(date));   
    df = DateFormat.getDateInstance(style, Locale.FRANCE);
    System.out.println("France: " + df.format(date));
    df = DateFormat.getDateInstance(style, Locale.ITALY);
    System.out.println("Italy: " + df.format(date));
    df = DateFormat.getDateInstance(style, Locale.JAPAN);
    System.out.println("Japan: " + df.format(date));
  }
}

了解更多信息,请参阅以下链接: -

http://www.java2s.com/Code/Java/Data-Type/DateFormatwithLocale.htm

答案 3 :(得分:1)

约达时间

使用Joda-Time库。

DateTimeFormatter formatter = DateTimeFormat.forStyle( "S-" ).withLocale( java.util.Locale.getDefault() ); // "S" for short date format. "-" to suppress the time portion. Specify locale for cultural rules about how to format a String representation.
DateTime dateTime = new DateTime( someDateObject, DateTimeZone.getDefault() ); // Convert a java.util.Date object to an org.joda.time.DateTime object. Specify time zone to assign to DateTime.
String output = formatter.print( dateTime ); // Generate String representation of date-time value.