Java中的本地化相对日期格式

时间:2012-01-26 18:44:59

标签: java date time localization

我想显示这样的日期:

  

[相对],每个月的短短几个小时:MINS [AM | PM] [TIMEZONE]

对于Locale.ENGLISH例如:

Today, Jan 26, 2012 07:41 PM CET

对于Locale GERMAN例如:

Heute, 26. Jan 2012 19:41 MEZ

几天前的约会日期:

Jan 22, 2012 07:41 PM CET

所以,[RELATIVE] - “prefix”应该只出现“available”(使用ICU4J),否则我们希望看到确切的日期;我们希望根据语言环境自动切换12/24小时表示

模式不起作用,因为没有相关内容的标识符,也没有hh:mm,基于语言环境自动12/24小时。

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

看看

DateFormat.getDateInstance(int style, Locale locale)

Javadoc

有了这个,您可以获得与语言环境相关的格式字符串。我不知道有任何适当的API提供今天/明天 - Heute / Morgen在您的约会前。但是你可以很容易地在前面提供星期几,比如星期三01/01/2010 10:00 PM。

DateFormat支持12个AM / PM或24小时。


更新您的评论:再次检查javadoc,DateFormat支持AM / PM或一整天的工作时间,具体取决于区域设置。

    System.out.println(DateFormat.getDateTimeInstance(DateFormat.FULL,
            DateFormat.FULL, Locale.ENGLISH).format(
            Calendar.getInstance().getTime()));
    System.out.println(DateFormat.getDateTimeInstance(DateFormat.FULL,
            DateFormat.FULL, Locale.GERMAN).format(
            Calendar.getInstance().getTime()));

产生

Thursday, January 26, 2012 9:49:41 PM CET
Donnerstag, 26. Januar 2012 21:49 Uhr MEZ

离开今天/明天的问题。 SimpleDateFormat不提供此功能。如果你真的需要它,我会写一个帮助器,它接受输入参数,包装getDateTimeInstance()。format()调用,并在它前面添加Today / Tomorrow,如果日期匹配。