2013-05-13 51 views
1

嗨,我有一个日期问题。 Java和PHP返回的日期与我的系统日期不符。日期与不同的编程语言不匹配系统日期

这里是我的系统设定的日期和时间

Date = 05-13-2013 10:58 AM 
Time Zone Info = (UTC+05:00) Islamabad, Karachi 

的Java

DateFormat df = new SimpleDateFormat("MM-dd-yyyy hh:mm a"); 
System.out.println(df.format(new Date())); 

TimeZone zone = TimeZone.getDefault(); 
System.out.println(zone.getDisplayName()); 
System.out.println(zone.getID()); 

结果:

2013年5月13日上午12时58

中央斯坦DARD时间

美洲/墨西哥城

PHP

echo ini_get('date.timezone')." ======= ".date_default_timezone_get()."<hr>"; 
echo date("m-d-Y h:i:s A", mktime()); 

结果

UTC ============== UTC

05-13-2013 06:02:21 AM

我想尽一切事情,但未能解决这个问题,有人建议设置时区在php.ini来解决这个问题,但我想编程languge应该选择系统时区和日期&时间。

我需要JAVA的解决方案 Java代码是否可以选择系统的日期和时间(时区)而不是某些配置设置。 (因为我希望我的代码应该是透明的,它应该在世界任何地方的任何服务器上运行,并且必须是系统中的任何时区)

如果以上情况不可能,可以在其中配置时区设置(请注意我正在运行独立应用程序,以及在JBOSS上运行的应用程序,这些应用程序计划任务)。

编辑:

我已经尝试了成功的结果 运行一个Java类,其中打印日期。

独立

javac MyCurrentDate.java 
java -Duser.timezone="GMT+5" MyCurrentDate 

打印它正确

的Jboss我已经添加-Duser.timezone PARAM在run.bat

set JAVA_OPTS =%JAVA_OPTS%-Xms512m -Xmx1124m -XX:PermSize = 256m -Duser。时区=“GMT + 5”

但我再次寻找全球性解决方案(Java代码的每个实例都应该返回正确的日期作为系统日期)

很少有人推荐时区更新工具。 但我相信它只会更新JDK和JRE的时区列表,并且没有此类选项来更改当前时区。 http://www.oracle.com/technetwork/java/javase/tzupdater-readme-136440.html

+0

这个工作正常,可能你没有在你的系统上设置时区。 – Ankit 2013-05-13 06:33:36

+0

它被设置,这就是为什么我很困惑。我上面在我的问题中也提到过 – 2013-05-13 06:49:26

回答

1

您正在使用哪种操作系统?我已经看到与Windows上的语言环境类似的问题,其中本地系统帐户具有与域用户不同的语言环境。

因此,作为服务运行的进程与域用户启动的进程具有不同的区域设置。

我的解决方案是用mstsc /console登录服务器控制台并更改服务器的时区。

编辑: 我不得不说我是一名Java开发人员,所以我的主要工作不是服务器维护,并且问题发生了一段时间。 我记得,我的经验是在Windows 2003服务器上,该服务器由公司的IT管理部门安装。

当我通过远程桌面以用户身份登录时,我可以将时区更改为正确的时区,但作为服务运行的应用程序服务器即使在重新启动后仍然使用旧(错误)时区。

在我为应用程序服务器设置了正确的时区之前,我必须像原始帖子中提到的那样(可能是本地管理员)通过控制台登录。

+0

我使用的是Windows 7,我的本地系统在eclipse中运行jboss服务器以及独立应用程序(两者都有相同的问题)。是的,我也是一个域用户。现在混乱,以上解决方案将只会改变我的域帐户时区设置或服务器时区。 – 2013-05-13 08:37:33

+0

当你在Eclipse中遇到同样的问题时,我不认为它是同样的问题。 – 2013-05-14 08:18:10

+0

你能解释一下你的问题和解决方法吗?谁知道这可能会有所帮助,你可以在上面的评论中回答这个问题吗?请您的帮助将不胜感激在此先感谢(表决) – 2013-05-14 11:07:52