Joda:UTC到用户的区域设置,具有夏令时偏移

时间:2014-11-07 09:52:34

标签: java postgresql timezone jodatime playframework-2.2

我的PostgreSQL字段中有一个java.util.Date存储为2014-11-08 13:45:00。 (是UTC)

我想展示它:至少与#34;欧洲/巴黎"时区,应该打14:45

我试过

  

DateTimeFormat.fullDateTime()。withZone(DateTimeZone.forID(" Europe / Paris"))。print(new DateTime(myJavaDate));

其他一些组合没有成功。

更好的是,如果它可以使用动态Locale而不是硬编码TimeZone,那将是完美的。

由于

编辑: 要在DB中编写它,我使用Ebean:

SimpleDateFormat parserSDF=new SimpleDateFormat("MMM dd, yyyy hh:mm:ss aaa", Locale.ENGLISH);
Date myJavaDate = parserSDF.parse(strDate);
...
bean.date = myJavaDate;
bean.save();

在我的表格中,它是timestamp without time zone列(Ebean自动生成)

1 个答案:

答案 0 :(得分:0)

我的工作解决方案

public String getTime(){
    Locale locale = Controller.request().acceptLanguages().get(0).toLocale();

    DateTime dateTime = new DateTime(betDate, DateTimeZone.UTC);
    dateTime = dateTime.withZone(DateTimeZone.forID("Europe/Paris"));
    return DateTimeFormat.shortTime().withLocale(locale).print(dateTime);
}

public String getDate(){
    Locale locale = Controller.request().acceptLanguages().get(0).toLocale();

    DateTime dateTime = new DateTime(betDate, DateTimeZone.UTC);
    dateTime = dateTime.withZone(DateTimeZone.forID("Europe/Paris"));
    return DateTimeFormat.shortDate().withLocale(locale).print(dateTime);
}