4

从我在自动生成的application.conf文件中可以看到,Play Framework 2.2 中的日期/时间是根据该文件中的定义进行格式化的date.format。例如,我定义了

date.format=yyyy-MM-dd
date.format.dk=d. MMMM yyyy

然而,在 Scala 模板中打印日期时,框架似乎忽略了这些值。线程提供了一种解决方案,其中将模式直接输入到模板中作为myDate.format("yyyy-MM-dd"). (如果使用 Jodatime,我猜这会变成myDate.toDate().format("yyyy-MM-dd")因为类上没有format()定义DateTime。)但这不仅会迫使人们在每次显示日期时重复该模式,它还会忽略当前的语言环境。

那么在 Play Framework 2.2.x 中针对不同语言环境格式化日期和时间的预期方法是什么?

4

2 回答 2

7

简而言之,如果您想对语言环境进行硬编码使用 JodaTime:

@(date: org.joda.DateTime)
@import java.util.Locale
@date.format("yyyy-MMM-dd", new Locale("sv", "SE"))

如果您想使用从浏览器 lang 标头中选择的语言环境(您还需要对模板隐含的请求):

@(date: org.joda.DateTime)(implicit lang: play.api.i18n.Lang)
@date.format("yyyy-MMM-dd", lang.toLocale)

我为此写了一篇详细的博客文章(因为我已经多次看到这个问题):

https://markatta.com/codemonkey/blog/2013/10/14/formatted-localized-dates-in-playframework-2/

于 2013-10-14T17:58:59.503 回答
1

我在这里找到了这个谷歌组(我对此没有任何功劳,但我认为它可以帮助某人)

@(myDate: org.joda.time.DateTime)

@import org.joda.time.format.DateTimeFormat

@defining(DateTimeFormat.forPattern("yyyy-MM-dd")) { dateFormatter =>
    @dateFormatter.print(myDate) )
}

或者你可以有这个

val dateFormatter = org.joda.time.format.DateTimeFormat.forPattern(myDatePattern)

并在模板中调用它(假设它以 utils 和 Object 格式存储):

@utils.Format.dateFormatter.print(myDate)

非常适合我

于 2015-08-17T02:41:27.400 回答