我试图获取一个日期字符串,其中包含星期和月份的缩短形式,以及月份的日期。
例如,具有英语区域设置的用户会看到:
Jun Jun 17
并且具有德语区域设置的用户会看到:
狄。 17 Juni
我一直在查看android.text.format.DateFormat
文档,getBestDateTimePattern(Locale locale, String skeleton)
看起来可能有用,但它需要API 18+,所以我无法使用它。
有没有办法让这种基于用户当前语言环境的短格式?
答案 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.