1

こんにちは、日付に問題があります。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());

結果:

2013 年 5 月 13 日 12:58 午前

中央標準時

アメリカ/メキシコ_都市

PHP

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

結果

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

2013 年 5 月 13 日 06:02:21 午前

私はあらゆることを試しましたが、この問題を解決できませんでした。この問題を解決するために php.ini でタイム ゾーンを設定することを提案した人もいますが、プログラミング言語でシステムのタイム ゾーンと日付と時刻を選択する必要があります。

Java の解決策が必要 です Java コードで、構成設定の代わりにシステムの日付と時刻 (タイムゾーン) を選択することは可能ですか。(コードを透過的にしたいので、システムのタイムゾーンに関係なく、世界中の任意のサーバーで実行する必要があります)

タイムゾーン設定を構成できる場所で上記が不可能な場合 (スタンドアロン アプリケーションと、タスクをスケジュールする JBOSS 上のアプリケーションを実行していることに注意してください)。

編集:

日付を出力するJavaクラスを実行して成功するために私が試したこと。

スタンドアロン

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

正しく印刷する

Jboss -Duser.timezoneパラメータを追加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

4

1 に答える 1

1

どのオペレーティング システムを使用していますか? ローカル システム アカウントがドメイン ユーザーとは異なるロケールを持っていた Windows のロケールで、同様の問題を見てきました。

そのため、サービスとして実行されているプロセスは、ドメイン ユーザーによって開始されたプロセスとは異なるロケールを持っていました。

私の解決策は、サーバー コンソールにログオンし、サーバーmstsc /consoleのタイムゾーンを変更することでした。

編集: 私は Java 開発者であるため、私の主な仕事はサーバーのメンテナンスではなく、問題はしばらく前に発生したと言わざるを得ません。私の経験は、会社の IT 管理部門によってインストールされた Windows 2003 サーバーでした。

リモート デスクトップ経由でユーザーとしてログインすると、タイムゾーンを正しいものに変更できましたが、サービスとして実行されているアプリケーション サーバーは、再起動後も古い (間違った) タイムゾーンを使用していました。

アプリケーションサーバーに正しいタイムゾーンを設定するには、元の投稿で述べたように (おそらくローカル管理者として) コンソールからログインする必要がありました。

于 2013-05-13T07:40:37.617 に答える