6

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

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());

但它并不能完全按照我的意愿工作(即使在我的手机上,我也总是得到像“2012 年 6 月 4 日下午 3:41:28”这样的“统一”结果)。我究竟做错了什么?

4

3 回答 3

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
于 2014-10-23T18:35:27.780 回答
2

在当前语言环境(设备语言环境!)中获取当前日期的最简单方法:

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

如果您想拥有不同样式的日期,请使用getDateInstance(int style)

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

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

如果你也需要时间:

String currentDateTime = DateFormat.getDateTimeInstance(DateFormat.DEFAULT,DateFormat.LONG).format(Calendar.getInstance().getTime());
于 2014-11-05T12:08:21.377 回答
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()方法。

于 2012-06-04T16:43:22.493 回答