您好我有约会问题。 Java和PHP返回的日期与我的系统日期不符。
这是我的系统设置日期和时间
Date = 05-13-2013 10:58 AM
Time Zone Info = (UTC+05:00) Islamabad, Karachi
爪哇
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());
结果:
05-13-2013 12:58 AM
中央标准时间
美洲/墨西哥城
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中设置时区来解决这个问题,但我想编程语言应该选择系统时区和日期&amp;时间。
我需要JAVA的解决方案 Java代码是否可以选择系统的日期和时间(时区),而不是某些配置设置。 (因为我希望我的代码应该是透明的,它应该在世界上任何地方的任何服务器上运行,任何时区,必须是系统)
如果无法在上面配置时区设置(请注意我正在运行独立应用程序以及JBOSS上的应用程序,它安排任务)。
修改
我尝试过成功的结果 运行一个打印日期的java类。
独立 的
javac MyCurrentDate.java
java -Duser.timezone="GMT+5" MyCurrentDate
正确打印
Jboss 我在run.bat
设置JAVA_OPTS =%JAVA_OPTS%-Xms512m -Xmx1124m -XX:PermSize = 256m -Duser.timezone =“GMT + 5”
但我再次寻找全球解决方案(每个java代码实例都应该返回系统日期的正确日期)
很少有人推荐过Timezone Updater Tool。 但我相信它只会更新JDK和JRE的时区列表,并且没有更改当前时区的选项。 http://www.oracle.com/technetwork/java/javase/tzupdater-readme-136440.html
答案 0 :(得分:1)
您使用的是哪种操作系统?我在Windows上看到了类似的问题,本地系统帐户的区域设置与域用户不同。
因此,作为服务运行的进程具有与域用户启动的进程不同的语言环境。
我的解决方案是使用mstsc /console
登录服务器控制台并更改服务器的时区。
编辑: 我不得不说我是一名Java开发人员,所以我的主要工作不是服务器维护,问题发生了一段时间。 据我所知,我的经验是在Windows 2003服务器上,该服务器是由公司的IT管理部门安装的。
当我通过远程桌面以用户身份登录时,我可以将时区更改为正确的时区,但作为服务运行的应用程序服务器即使在重新启动后仍然使用旧的(错误的)时区。
在为应用程序服务器设置正确的时区之前,我必须通过原始帖子中提到的控制台(可能是本地管理员)登录。