如何根据区域设置显示日期格式?

时间:2015-03-19 11:13:02

标签: android date locale

我想显示一个提示应该如何输入日期。 德国可能看起来像

“以此格式输入日期:dd.mm.yyy”

对于美国

“以此格式输入日期:mm / dd / yyyy”

我理解

DateFormat dateFormat = android.text.format.DateFormat.getDateFormat(context);

我可以将日期转换为与用户的语言环境匹配的格式。 但是,如何获得提示的日/月/年字符串?

当然,我也希望类似的东西也有时间的暗示。

感谢您的任何建议。

4 个答案:

答案 0 :(得分:4)

您可以使用DateFormat的getBestDateTimePattern方法:

String datePattern = DateFormat.getBestDateTimePattern(Locale.getDefault(), "ddMMyyyy");
String timePattern = DateFormat.getBestDateTimePattern(Locale.getDefault(), "HHmmss");

注意:假定时间为24小时格式。您可能希望在呈现给用户之前转换为所有大写或小写。

答案 1 :(得分:3)

String hintText = new SimpleDateFormat().toPattern(); // dd/MM/y HH:mm

我知道你要求的只是日期,但这是我能得到的尽可能接近。 内部规则是localeData.getDateFormat(SHORT) + " " + localeData.getTimeFormat(SHORT)所以我想只要不存在具有空格的日期格式的区域设置,就可以在空格上拆分字符串

答案 2 :(得分:2)

试试这个:

    Calendar cal = Calendar.getInstance();
                            int year = cal.get(Calendar.YEAR);
                            int month = cal.get(Calendar.MONTH);
                            int day = cal.get(Calendar.DAY_OF_MONTH);
                            int hour = cal.get(Calendar.HOUR_OF_DAY);
                            int minute = cal.get(Calendar.MINUTE);
                            int second = cal.get(Calendar.SECOND);

Calendar now = new GregorianCalendar(year, month, day, hour, minute, second);

long time = now.getTimeInMillis();
Date date = new Date(time);

String timeSet = DateFormat.getDateTimeInstance(DateFormat.SHORT, DateFormat.SHORT).format(date);

答案 3 :(得分:1)

使用日期选择器来约会是不是更容易:http://developer.android.com/guide/topics/ui/controls/pickers.html#DatePicker

如果没有,那么请看一下:https://stackoverflow.com/a/11093572/3965178