0

特定のプロセスを実行する必要がある時刻を保持するデータベースがあります 現在時刻とプロセスを実行する予定の時刻との差を示すクエリを実行します たとえば、この数字 23 を取得する場合があります:49:44.835 これは、約 23 時間でプロセスを実行する必要があることを意味します。このプロセスをミリ秒単位で取得したいので、これを行いました

Date Date = (java.util.Date) (InMsgTstable[index][0]);
long Value3 = Date.getTime();

データベースに保存されているミリ秒の値は削除されますが、取得した日付の値は正しいです。この時間/分などの数をミリ秒単位で取得したいので、その数をミリ秒の遅延としてスケジューラに入れることができます。ただし、これはミリ秒単位で間違った値を与えています。任意のヒント?

4

1 に答える 1

1

データベース テーブルを管理している場合は、列の型を整数型に変更し、ミリ秒単位のタイムスタンプを整数値として単純に格納します。

これにより、値をタイムスタンプとして扱い、データベースが日付と時刻の列で実行する変換を処理することなくネイティブに使用できますDateCalendar

編集

上記のコメントから、取得した値は、現在の日の開始からのミリ秒数のように見えることがわかります(これは定義上、ローカルタイムであるため、データベースのタイムゾーン値に注意してください。)

このタイムスタンプを使用して作成した日付は 1970 年 1 月 1 日であり、これは意図したものではありません。

あなたができることは、デフォルトが「今」であるカレンダーオブジェクトを作成し、一日の始まりにバックアップし、そのタイムスタンプを取得して、データベースから取得した値に追加することです (未テスト):

Calendar cal = Calendar.getInstance();

cal.set(Calendar.HOUR_OF_DAY, 0);
cal.set(Calendar.MINUTE, 0);
cal.set(Calendar.SECOND, 0);
cal.set(Calendar.MILLISECOND, 0);

long stamp = cal.getTime().getTime() + msgTableValue;

Date dat = new Date(stamp);

これにより、現在のミリ秒をDate表すオブジェクトが得られます。msgTableValue

于 2012-07-18T20:10:14.567 に答える