7

私がする必要があるのは:

1) リクエストからユーザーのロケールを取得します。

2)ユーザーのロケールに基づいて、現在の日付と時刻で新しい sql.Date オブジェクトを作成します

3) MySQL db、列タイプ: TIMESTAMP に書き込みます。

私が得たものは次のとおりです。

java.util.Locale locale = request.getLocale();

java.text.DateFormat dateFormat =
java.text.DateFormat.getDateTimeInstance(
                        java.text.DateFormat.LONG, java.text.DateFormat.LONG, locale );

java.util.Date date = new java.util.Date();

java.sql.Date sqlDate = new java.sql.Date( date.getTime() );

日付は問題ありませんが、時間に問題があります。常に午前 12:00:00 です。

助言がありますか?これを行うより効率的な方法はありますか?

4

5 に答える 5

17

さらにコンパクトなソリューション;)

java.sql.Date timeNow = new Date(Calendar.getInstance().getTimeInMillis());
于 2013-03-22T14:07:10.993 に答える
9

それにはもう1つの簡単な解決策があります。このコードを使用して、java.util.Date を使用して現在の日付を取得します

java.util.Calendar cal = java.util.Calendar.getInstance();
java.util.Date utilDate = cal.getTime();
java.sql.Date sqlDate = new Date(utilDate.getTime());
于 2011-12-22T08:22:45.970 に答える
4

時間が必要な場合は、java.sql.Date ではなく java.sql.Timestamp と、データベース内のタイムスタンプ列が必要です。

于 2009-05-06T12:42:06.837 に答える
0

ロケールに基づいてタイムゾーンを取得することは、実際のタイムゾーンではない場合があります。

例:ここオーストラリアでは、ロケールは「en-AU」ですが、最大3時間の差があるタイムゾーンがいくつかあります。

アメリカでもこの問題があると思います。

考えられる解決策は、代わりにUTC時間を保存することです。次に、ユーザーが自分の好みなどでタイムゾーンを調整する場合、またはタイムゾーンを渡す他の方法(クライアント/ブラウザ情報はAJAX経由など)を使用する場合は、java.util.Calendarインスタンスを使用してそれに基づいてUTC時間を調整できます。

于 2009-05-06T14:27:15.400 に答える
0

request.getLocaleはAccept-Language見出しの値を使用し、常に正しいロケールを提供するとは限らないことに注意してください。

于 2009-05-06T13:10:32.043 に答える