润乾报表中now()函数结果与系统时间相差8小时的解决方案
2016-12-01 10:15
666 查看
来看下面一个报表:
在这个报表中的B4单元格,是获取当前时间函数now(),我们在页面中看一下效果:
而系统当前时间为:
我们可以发现一个奇怪的现象,那就是用now()函数获取的当前时间与系统时间相差8个小时,这个是什么原因呢?
由于润乾报表中的now()函数,是用new java.util.Date()取得的,那么问题肯定就出在jdk上了。
原来,J2SE中包含世界不同地区的时间区域数据文件。jre/lib/zi存放着这些文件。在J2SE里,sun.util.calendar.ZoneInfo从这些文件获取DST(夏令时)规则。 java.util.TimeZone类中getDefault方法的源代码显示,它最终是会调用sun.util.calendar.ZoneInfo类的getTimeZone 方法。这个方法为需要的时间区域返回一个作为ID的String参数。这个默认的时间区域ID是从
user.timezone (system)属性那里得到。如果user.timezone没有定义,它就会尝试从user.country和java.home (System)属性来得到ID。 如果它没有成功找到一个时间区域ID,它就会使用一个"fallback" 的GMT值。换句话说, 如果它没有计算出你的时间区域ID,它将使用GMT作为你默认的时间区域。
解决办法:
设置JVM的默认时区为东八区(北京时间):
在jdk的安装目录中的jre\lib\zi下,存放这各个时间区域的数据文件,我们找到GMT文件bak备份一下,然后在zi文件夹下的Asia中复制一份Hong_Kong并重命名为GMT(Hong_Kong为北京时区即东八区),复制完毕后,重启服务器,在浏览报表:
可以看到,时间与系统时间统一了。
来看下面一个报表:
在这个报表中的B4单元格,是获取当前时间函数now(),我们在页面中看一下效果:
而系统当前时间为:
我们可以发现一个奇怪的现象,那就是用now()函数获取的当前时间与系统时间相差8个小时,这个是什么原因呢?
由于润乾报表中的now()函数,是用new java.util.Date()取得的,那么问题肯定就出在jdk上了。
原来,J2SE中包含世界不同地区的时间区域数据文件。jre/lib/zi存放着这些文件。在J2SE里,sun.util.calendar.ZoneInfo从这些文件获取DST(夏令时)规则。 java.util.TimeZone类中getDefault方法的源代码显示,它最终是会调用sun.util.calendar.ZoneInfo类的getTimeZone 方法。这个方法为需要的时间区域返回一个作为ID的String参数。这个默认的时间区域ID是从
user.timezone (system)属性那里得到。如果user.timezone没有定义,它就会尝试从user.country和java.home (System)属性来得到ID。 如果它没有成功找到一个时间区域ID,它就会使用一个"fallback" 的GMT值。换句话说, 如果它没有计算出你的时间区域ID,它将使用GMT作为你默认的时间区域。
解决办法:
设置JVM的默认时区为东八区(北京时间):
在jdk的安装目录中的jre\lib\zi下,存放这各个时间区域的数据文件,我们找到GMT文件bak备份一下,然后在zi文件夹下的Asia中复制一份Hong_Kong并重命名为GMT(Hong_Kong为北京时区即东八区),复制完毕后,重启服务器,在浏览报表:
可以看到,时间与系统时间统一了。
相关文章推荐
- php date()函数结果与当前时间相差8小时
- Java获取时间与系统时间相差8小时终极解决方案
- Java获取时间与系统时间相差8小时终极解决方案
- Java获取时间与系统时间相差8小时终极解决方案
- 解决weblogic与系统时间相差8小时的问题
- java 和系统时间相差8小时
- 关于win7系统的jdk时间与系统时间相差8小时
- 双系统(CentOS和XP)的系统时间相差8小时
- PHP 中 Date 函数与实际时间相差8小时的解决方法
- PHP DATE( )函数与系统时间差8小时解决办法
- PHP DATE( )函数与系统时间差8小时解决办法
- 关于win7系统的jdk时间与系统时间相差8小时
- 关于windows IIS日志时间与系统时间相差8小时的问题
- PNR与票面的时间相差8小时(生产系统)
- 解决weblogic与系统时间相差8小时的问题
- 如何解决weblogic与系统时间相差8小时的问题
- Windows与Linux(Ubuntu)双系统时间不一致 (相差8小时) 的解决方法
- Java获取时间与系统时间相差8小时的解决方法
- 关于windows IIS日志时间与系统时间相差8小时的问题
- PHP5.2中date()函数显示时间与北京时间相差8小时的解决办法