【问题标题】:f:convertDateTime returns wrong date and timef:convertDateTime 返回错误的日期和时间
【发布时间】:2014-08-05 12:41:53
【问题描述】:

我有一个包含 DATE 类型字段的数据库表,我想以这种格式“dd.mm.yyyy hh:mm:ss”在用户界面上显示它。我使用 Hibernate 查询获取它并使用以下方法进行转换:

<f:convertDateTime pattern="dd.mm.yyyy hh:mm:ss" />

但结果不是我所期望的。

例如:

8.6.2014 03:00:00 (from the DB)  -> 08.00.2014 12:00:00 (in the user interface)
15.6.2014 12:00:00 (from the DB) -> 15.00.2014 12:00:00 (in the user interface)

我在我的 web.xml 中添加了

<context-param>
        <param-name>javax.faces.DATETIMECONVERTER_DEFAULT_TIMEZONE_IS_SYSTEM_TIMEZONE</param-name>
        <param-value>true</param-value>
    </context-param>

我的时区是 UTC+02:00

提前感谢您的帮助。

【问题讨论】:

    标签: oracle hibernate date datetime


    【解决方案1】:

    月份用大写“M”表示。在您的情况下,它将是:

    <f:convertDateTime pattern="dd.MM.yyyy HH:mm:ss" />
    

    编辑

    你也应该添加你的时区:

    <f:convertDateTime pattern="dd.MM.yyyy HH:mm:ss" timeZone="GMT+2" />
    

    编辑 2

    如果不行,可以使用SimpleDateFormat

    public static String dateToString(Date date, String format) throws ParseException {
        SimpleDateFormat sdf = new java.text.SimpleDateFormat(format);
        return sdf.format(date);
    }
    

    然后:

    String newDate = dateToString(myDate, "dd.MM.yyyy HH:mm:ss");
    

    【讨论】:

    • 不显示:8.6.2014 03:00:00(来自数据库)-> 08.06.2014 12:00:00(始终为 12:00:00 点)
    • 现在为所有人显示 09:00:00 而没有任何改变。
    • 你尝试了什么模式?
    • 改用dd.MM.yyyy HH:mm:ss
    • 我从未使用过 JSF,所以我无法想象您为什么会弄错时间,但您可以改用 SimpleDateFormat,并在您的 bean 中获取正确的日期。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-02-10
    • 2011-09-26
    • 1970-01-01
    相关资源
    最近更新 更多