0

次のコードがあります

public String getDate(Date date) throws Exception{

        String finalDate = "";

        SimpleDateFormat formatter = new SimpleDateFormat("MM/dd/yyyy");
        finalDate = formatter.format(date);

        return finalDate;

}

このメソッドの入力を として渡しました9999-12-30 18:30:00.0

私のライブ環境では、結果は次のとおりです。12/30/9999

私のローカル環境では、結果は次のとおりです。12/31/9999

この奇妙な行動の理由は何でしょうか。前もって感謝します..

4

5 に答える 5

2

ライブ環境とローカルにはタイムゾーンの違いがあるため

于 2013-07-16T09:17:44.123 に答える
1

dateformat で特定のタイム ゾーン (UTC など) を使用するように強制するには、次を使用できます。

SimpleDateFormat formatter = new SimpleDateFormat("MM/dd/yyyy");
formatter.setTimeZone(TimeZone.getTimeZone("UTC"));
于 2013-07-16T09:22:14.083 に答える
0

心に留めておくべき良いことの 1 つはjava.util.Date、タイム ゾーンの概念がないことです。それを知っている人が少ないことにいつも驚かされます。したがって、アプリケーションで統一された結果が必要な場合は、解析時と印刷時に必ずタイムゾーンを使用してください。

@assyliasが言ったように、これを達成するために日付フォーマッターのタイムゾーンを設定できます。

于 2013-07-16T09:28:40.270 に答える
0

あなたのローカルサーバーはインドにあり、生産は米国にあるとあなたが言ったように@psr。

タイムゾーンが問題であるため、この問題が発生しています。

実稼働サーバーは米国にあるため、これを試してください。

SimpleDateFormat formatter = new SimpleDateFormat("MM/dd/yyyy");
formatter.setTimeZone(TimeZone.getTimeZone("UTC"));
于 2013-07-16T09:26:22.873 に答える