j2ee工程如何取得本地时间?(请见详细内容)

我做一个项目,在插入数据库时,创建时间用的是本地时间:
Timestamp createTime = new Timestamp(System.currentTimeMillis());
结果发现得到的时间跟正确时间差8个小时!
然后我用System.out.println(new Date());得到:Wed Mar 17 08:42:15 GMT 2010
看来是得的格林威治时间。

于是我上网查,有一个帮助有用:
在eclipse的preferences->java->installed jres里面
给default vm arguments加上参数-Duser.timezone=Asia/Shanghai
运行main程序里的System.out.println(new Date());得到了正确的时间。

然而在我的j2ee工程里,还是老样子——差8个小时,也没有那个选项可以加参数。
这样移到服务器上时间也一定会有问题的。
哪位大侠能解决这个问题啊??!!先谢谢啦!!

在“首选项- >Tomcat - >JVM Settings ”项,设定 JRE 的版本为“ jre1.5.0_06”,并且添加如下几个JVM Parameters :

-Xms128m

-Xmx512m

-Dfile.encoding=UTF8

-Duser.timezone=GMT+08


在catalina.bat(windows)/catalina.sh(linux)中 修改set JAVA_OPTS=%JAVA_OPTS%如下
set JAVA_OPTS=%JAVA_OPTS% -Xms128m -Xmx512m -Duser.timezone=GMT+08


找一台能正常设置时区windows注册表 [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Time Zones],备份,覆盖.;

j2ee工程 运行时 , 是Server启动(比如,Tomcat),Server启动时需要启动JVM的,而这个JVM用的是 你计算机的 时区配置。

你的电脑的 时区配置怎么样?

[quote]eclipse的preferences->java->installed jres[/quote]

这里配置的虚拟机的参数,在你的J2ee项目中时不生效的,因为J2ee Server会另外启动一个JVM的。

不像你的 Main程序。。。

new java.sql.Date(System.currentTimeMillis());

new java.sql.Date(new java.util.Date().getTime()):

System.currentTimeMillis 获得的不是本地时间吗?