2

関連付けられている特定の日付を実際に知らなくても、時間値を mysql データベースに保存できるようにしたいと考えています。私は java.sql.time を使用してデータを保存しています。

long timeInMillis = 43200000; //This is 12 hours in milliseconds.    
Time time = new Time(timeInMillis);

なんらかの理由で、これにより 07:00:00 の時間が表示され、12:00:00 になるはずです。これは、時間変数を設定するときに、特定の日付を過ぎた時間に基づいているためだと思います。定義済みの日付を実際に使用せずに時間変数を設定するにはどうすればよいですか?

これを行う理由は、曜日と時間範囲をデータベースに保存したいからです。したがって、日曜日の 12 から 1 は、12:00:00 から 13:00:00 の間で 0 になります。実際の日付の値をデータベースと比較し、月や年に関係なく、日付が曜日に基づいて期間内にあるかどうかを確認できるようにしたいと考えています。可能な曜日と時間ごとに完全な日付をデータベースに格納すると、何千もの不要なエントリが発生します。

4

2 に答える 2

1

For whatever reason this is giving me a time of 07:00:00 and it should be 12:00:00. I'm assuming this is because when setting a time variable it is based on the amount of time past a specific date

Can happen due to TimeZone difference. Check for timezone information while saving and retrieving values.

于 2012-08-25T18:44:19.500 に答える
0

これはおそらくタイムゾーンの問題ですが、時間の値を文字列としてデータベースに渡すことで問題を解決しました。タイムゾーンのプロパティが重要でない限り、とにかくこのインスタンスでは物理文字列を使用するのがおそらく最善です。

String startTime = "12:00:00";
String endTime = 01:00:00;

タイムゾーンが重要な場合、日付オブジェクトを準備していない限り、使用する最善の方法は、現在のセッションのmysqlステートメントでタイムゾーンを直接設定することだと思います。詳細については、MySQL のタイム ゾーンを設定するにはどうすればよいですか? を参照してください。

編集: 結局、これは実際にはタイム ゾーンの問題ではなかったことが判明しました (ただし、他の状況では可能性があるため、タイム ゾーンの調整を信用しないでください)。ミリ秒単位の時間を間違って計算していました。

于 2012-08-25T20:58:12.517 に答える