2013-05-13 48 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