我有一个输入日期时间字符串:
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”,即使在我的手机上)。我做错了什么?
答案 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.LONG
,DateFormat.DATE_FIELD
,DateFormat.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()
方法。