日期(作为日期时间类型)存储在我的数据库中,如下所示:31.10.2012
当我在UI中显示它时,它默认情况下呈现如下:2012-10-31
我使用<f:convertDateTime pattern="dd.MM.yyyy" />它转换它,并且意外地转向
30.10.2012
的SimpleDateconverter,供给具有相同的日期和相同的格式字符串返回31.10.2012,如所预期.
我错过了什么?
谢谢
编辑:对于存储为Timestamp相同转换的日期产生正确的结果,所以我认为它与Date解释为确切的午夜有关,反过来可能被解释为属于2个不同的日期.但我仍然不知道在哪里定义行为以及什么是最好的解决方法.
尝试输出数据表中的项列表,如下所示:
<t:dataTable value="#{mybean.list}" var="item">
<h:column>
<h:outputText value="#{item.time}">
<f:convertDateTime pattern="yyyy-MM-dd HH:mm:ssZ" timeZone="#{item.timeZone}" />
</h:outputText>
</h:column>
</t:dataTable>
Run Code Online (Sandbox Code Playgroud)
它总是以GMT格式化时间.如果我使用字符串常量或不是datatable变量的bean(如'#{mybean.timeZone}'),它会按预期工作.
在我的JSF托管bean中,我已将startDate声明为java.utilDate类型,并且我也有getter和setter.从数据库startDate是日期类型.
当我收到值格式是默认类型,我格式化日期
SimpleDateFormat df = new SimpleDateFormat(" dd MMM yyyy");
Date oneDate = new Date(startDate);
df.format(oneDate);
Run Code Online (Sandbox Code Playgroud)
我面临的问题是df.format(oneDate);返回String.是否可以转换df.format(oneDate)回Date,以便我不必更改我的startDate数据类型.
任何帮助都非常感谢.
谢谢
我的数据库中有日期时间.当我尝试显示它时,"小时"是错误的(6小时以上).
DB 2013-03-12 10:05:49
Display 2013/03/12 16:05:49
Run Code Online (Sandbox Code Playgroud)
我正在使用primefaces,这是代码:
<p:column id="fecha" headerText="Fecha" style="text-align: center">
<h:outputText value="#{con.fecha}" >
<f:convertDateTime pattern="yyyy/MM/dd HH:mm:ss" />
</h:outputText>
</p:column>
Run Code Online (Sandbox Code Playgroud)
我试图使用该模式HH,但它似乎不起作用.