一、问题:
用一个<h:outputText/>直接显示日期,显示在页面上的日期会比从数据库里取出的日期提前一天。
二、解决方法:
在<h:outputText/>标签中加入<f:convertDateTime>标签,就可以解决这个问题,代码如下:
三、问题原因:
能够解决上面问题的关键是 timeZone = "GMT+8",也就是说问题处在时区上,timeZone属性规定了时区,所以时间可以正常显示。
四、附录-GMT的介绍
GMT 就是格林威治标准时间的英文缩写(Greenwich Mean Time 格林尼治标准时间).
格林威治是伦敦泰晤士河南岸的一个地方,由于从19世纪开始,因为世界各国来往频繁,而欧洲大陆、美洲大陆和亚洲大陆都有各自的时区,所以为免混乱,各国 的代表就在1884 年在美国华盛顿召开了国际大会,通过协议选出伦敦的格林威治,作为全球时间的中心点,格林威治标准时间因而诞生。所以有GMT功能的腕表就是说腕表拥有其 中的小时表盘可以显示GMT时间。
GMT+8 就是说与GMT时差8个小时,刚好就是我们中国的时间. 北京时间是 GMT+8.
想了解更多关于GMT的概念,可以参看这个连接 http://wwp.greenwichmeantime.com/gmt-converter2.htm
用一个<h:outputText/>直接显示日期,显示在页面上的日期会比从数据库里取出的日期提前一天。
二、解决方法:
在<h:outputText/>标签中加入<f:convertDateTime>标签,就可以解决这个问题,代码如下:
- <h:outputText value="#{data.t_Date}">
- <f:convertDateTime pattern="yyyy年MM月dd日" timeZone="GMT+8"/>
- </h:outputText>
能够解决上面问题的关键是 timeZone = "GMT+8",也就是说问题处在时区上,timeZone属性规定了时区,所以时间可以正常显示。
四、附录-GMT的介绍
GMT 就是格林威治标准时间的英文缩写(Greenwich Mean Time 格林尼治标准时间).
格林威治是伦敦泰晤士河南岸的一个地方,由于从19世纪开始,因为世界各国来往频繁,而欧洲大陆、美洲大陆和亚洲大陆都有各自的时区,所以为免混乱,各国 的代表就在1884 年在美国华盛顿召开了国际大会,通过协议选出伦敦的格林威治,作为全球时间的中心点,格林威治标准时间因而诞生。所以有GMT功能的腕表就是说腕表拥有其 中的小时表盘可以显示GMT时间。
GMT+8 就是说与GMT时差8个小时,刚好就是我们中国的时间. 北京时间是 GMT+8.
想了解更多关于GMT的概念,可以参看这个连接 http://wwp.greenwichmeantime.com/gmt-converter2.htm