【问题标题】:Localized relative date formatting in JavaJava中的本地化相对日期格式
【发布时间】:2012-01-26 18:44:59
【问题描述】:

我想这样显示日期:

[RELATIVE],SHORT-MONTH DAY YEAR HOURS:MINS [AM|PM] [TIMEZONE]

对于 Locale.ENGLISH 例如:

Today, Jan 26, 2012 07:41 PM CET

对于语言环境德语,例如:

Heute, 26. Jan 2012 19:41 MEZ

对于几天前的约会:

Jan 22, 2012 07:41 PM CET

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

模式不起作用,因为该相关事物没有标识符,hh:mm 也没有标识符,根据语言环境自动 12/24 小时。

有什么想法吗?

【问题讨论】:

  • 您是否有具体的问题要寻求帮助,或者只是作家的障碍?
  • 我要求一段代码,它根据移交的日期和语言环境返回包含上述表示中的日期和时间的字符串。
  • 哦,所以这是一个“为我做我的工作”的问题。
  • 不,这是一个问题,我认为论坛是用来提问的;也许一个提示会有所帮助 - 但我刚刚发现了如何做到这一点......什么都不感谢:)
  • 我并不是真的想与你为敌。不管你喜不喜欢,本质上是“给我发代码”的问题,我想说,在 SO 上非常受欢迎。 “不太受欢迎”意味着你不太可能得到你想要的答案,最终会浪费时间等待答案。另一方面,提出人们想回答的问题是双赢的局面。

标签: java date time localization


【解决方案1】:

看看

DateFormat.getDateInstance(int style, Locale locale)

Javadoc

有了这个,您可以获得依赖于语言环境的格式字符串。我不知道有任何适当的 API 可以在您的日期前提供 Today/Tomorrow - Heute/Morgen。但是您可以轻松地在前面提供星期几,例如 Wed 01/01/2010 10:00PM。

DateFormat 支持两者,上午/下午 12 小时或一天 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。

【讨论】:

  • 我知道,但这不是我想要的;我确实想要一个规范,在开始时我得到今天/明天而不是星期几(这很容易),并且还需要自动检测正确的小时格式(12/24)dep。在语言环境中...
  • 我已经更新了我的帖子:Dateformat 已经检测到小时格式,请参阅示例。
  • 啊,是的,如果你不使用模式,我知道。我已经在那个时候了。但是用相对日期做一个本地化的前缀并不是一件容易的事——你想怎么做跨语言?
  • 好吧,那么我会重做 ICU4J 已经做的事情,他们已经为相关日期提供了翻译前缀;更好的是:对于不同的语言环境,行为是不同的。对于德语,例如他们甚至支持 vorgestern(前天),因为只支持昨天的英语。查找所有约 30 种语言的所有翻译以及每种语言约 5 个相对日期听起来不是正确的方法。
  • 抱歉,错过了 ICU4J 部分。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-01-03
  • 2012-07-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多