根据我在自动生成的application.conf
文件中看到的内容,Play Framework 2.2中的日期/时间根据该文件中date.format
的定义进行格式化。例如,我已经定义了
date.format=yyyy-MM-dd
date.format.dk=d. MMMM yyyy
但是,在Scala模板中打印日期时,框架似乎忽略了这些值。 This线程提供了一个解决方案,其中一个人将模式直接输入模板myDate.format("yyyy-MM-dd")
。 (如果使用Jodatime,我猜这会变成myDate.toDate().format("yyyy-MM-dd")
,因为在format()
类上没有定义DateTime
。)但这不仅强制每次显示日期时重复模式,它也忽略了当前的语言环境。
那么在Play Framework 2.2.x中针对不同语言环境设置日期和时间格式的预期方法是什么?
答案 0 :(得分: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/
答案 1 :(得分:1)
我在这里发现Google group(我对此没有任何赞誉,但我认为它可以帮助某人)
WebView.setWebChromeClient()
或者你可以拥有这个
@(myDate: org.joda.time.DateTime)
@import org.joda.time.format.DateTimeFormat
@defining(DateTimeFormat.forPattern("yyyy-MM-dd")) { dateFormatter =>
@dateFormatter.print(myDate) )
}
并在模板中调用它(假设它以utils和Object Format存储):
val dateFormatter = org.joda.time.format.DateTimeFormat.forPattern(myDatePattern)
对我来说效果很好