oracle f:convertDateTime返回错误的日期和时间

t9eec4r0  于 2023-08-03  发布在  Oracle
关注(0)|答案(2)|浏览(106)

我有一个数据库表,其中的字段类型为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
提前感谢您的帮助。

ljo96ir5

ljo96ir51#

月份用大写字母“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");

t1rydlwq

t1rydlwq2#

试试这个<f:convertDateTime pattern="dd.mm.yyyy HH:mm:ss" type="both" timeZone="UTC+02"/>

相关问题