小编Jid*_*hem的帖子

如何在Java中提取特定于语言环境的格式的日期字段?

我需要从Java日期中仅提取月份和年份信息以显示在GUI中.必须使用用户区域设置翻译此日期.我知道两种格式化本地化日期的方法:

  1. 运用 DateFormat.getInstance(DateFormat.LONG, locale).format(date)
  2. 运用 new SimpleDateFormat("yyyy M", locale).format(date)

对于区域设置SIMPLIFIED_CHINESE和日期2013-02-18,这给出:

  1. 2013年2月18日
  2. 2013年2

我们需要使用LONG没有日期的格式(2013年2月).[变体2显然是不可接受的,因为年月的排序不受区域设置的影响].问题可能是:如何从长格式中删除日期部分(18日)?我尝试使用该方法format(Date date, StringBuffer toAppendTo, FieldPosition pos),但这只允许提取数字部分,而不是额外的字符.

模式DateFormat.getInstance(DateFormat.LONG, Locale.SIMPLIFIED_CHINESE)yyyy'?'M'?'d'?'.提取日期部分会产生yyyy'?'M'?'.在我看来,不可能使用Java的DateFormat标准来实现这一点,因为额外的字符(?,??)似乎没有映射到相应的字段,而只是格式化器没有其他语义的字符.

我一看DateFormatSymbolsLocaleServiceProvider,但认为这并不能帮助.对我来说,扩展点将是为getInstance(int style)方法添加另一种日期样式.但是如果没有为所有Locale实现它,它似乎是不可能的......

这个分析是否正确?如何以干净的方式实现这种格式化?

java locale date-format internationalization chinese-locale

7
推荐指数
1
解决办法
1560
查看次数