以当前区域设置显示日期

时间:2012-06-04 16:27:04

标签: android date localization locale

我有一个输入日期时间字符串:

  

2012-06-04 15:41:28

我想在各个国家正确展示它。例如,在欧洲,我们有dd.MM.yyyy而美国则使用MM / dd / yyyy。

我目前的代码是这样的:

TextView timedate = (TextView) v.findViewById(R.id.report_date);
SimpleDateFormat curFormater = new SimpleDateFormat("yyyy-MM-dd kk:mm:ss"); 
curFormater.setTimeZone(TimeZone.getDefault());
Date dateObj = curFormater.parse(my_input_string); 
timedate.setText(dateObj.toLocaleString());

但它并不能完全符合我的要求(我总是得到“统一”结果,如“Jun 4,2012 3:41:28 PM”,即使在我的手机上)。我做错了什么?

3 个答案:

答案 0 :(得分:4)

试试这个:

TextView timedate = (TextView) v.findViewById(R.id.report_date);
SimpleDateFormat curFormater = new SimpleDateFormat("yyyy-MM-dd kk:mm:ss"); 
curFormater.setTimeZone(TimeZone.getDefault());
Date dateObj = curFormater.parse(my_input_string);

int datestyle = DateFormat.SHORT; // try also MEDIUM, and FULL
int timestyle = DateFormat.MEDIUM;
DateFormat df = DateFormat.getDateTimeInstance(datestyle, timestyle, Locale.getDefault());

timedate.setText(df.format(dateObj)); // ex. Slovene: 23. okt. 2014 20:34:45

答案 1 :(得分:2)

以当前语言环境获取当前日期的最简单方法(设备区域设置!):

String currentDate = DateFormat.getDateInstance().format(Calendar.getInstance().getTime());

如果您希望以不同的样式使用日期,请使用getDateInstance(int style)

DateFormat.getDateInstance(DateFormat.FULL).format(Calendar.getInstance().getTime());

其他样式:DateFormat.LONGDateFormat.DATE_FIELDDateFormat.DAY_OF_YEAR_FIELD等(使用CTRL + Space查看所有样式)

如果你也需要时间:

String currentDateTime = DateFormat.getDateTimeInstance(DateFormat.DEFAULT,DateFormat.LONG).format(Calendar.getInstance().getTime());

答案 2 :(得分:0)

您是否尝试过此变体:

   SimpleDateFormat sdf = new SimpleDateFormat(format, Locale.US);
   System.err.format("%30s %s\n", format, sdf.format(new Date(0)));
   sdf.setTimeZone(TimeZone.getTimeZone("UTC"));

从文档中获取。我的意思是使用format()方法。