一个Liner根据默认语言环境获取星期几,日期和时间的字符串表示

时间:2015-03-30 13:22:13

标签: java date date-format simpledateformat date-formatting

我使用DateFormatSimpleDateFormat的组合来从Date对象中获取以下字符串:

fre 20 22:48

此代码段产生上述结果:

DateFormat localizedTimeFormatter = DateFormat.getTimeInstance(DateFormat.SHORT, Locale.getDefault());
String str = new SimpleDateFormat("EE d", Locale.getDefault()).format(date) + " " + localizedTimeFormatter.format(date);

结果完全符合我的要求,但我认为可以做些改进。我想只使用SimpleDateFormat来实现这一目标,并且每周和每月的日期都可以获得短名称。问题是根据区域设置,或者更准确地说,12或24小时格式,只需要几小时和几分钟的时间。我已查看SimpleDateFormat Javadoc SimpleDateFormat上的文档 但正如我所看到的那样,通过将格式字符串设置为SimpleDateFormat,无法获得12或24小时格式的时间(hhmm)?有没有办法通过仅使用SimpleDateFormat作为oneliner来实现这一点,或者我必须按照我已经完成的方式来实现这一点,还是有完全不同的方法来解决这个小问题?

2 个答案:

答案 0 :(得分:0)

怎么样

SimpleDateFormat sdf = new SimpleDateFormat("EE d HH:mm", Locale.getDefault());

SimpleDateFormat sdf = new SimpleDateFormat("EE d hh:mm", Locale.getDefault());

答案 1 :(得分:0)

您的方法正确。 但是,我不需要使用DateFormatter。

我在这条线上得到了你期望的结果。

      String str = new SimpleDateFormat("EEE, d, k:m", Locale.getDefault()).format(Calendar.getInstance().getTime());

输出是:

      Mon, 30, 19:5

我认为你在SimpleDateFormat的第一个参数中使用的模式是关键。 各个字母及其组合的含义已在您提供的链接中提及。

希望这有帮助。