2

私の単純なアプリケーションでは、を使用してプログラムでタイムスタンプをデータベーステーブルに格納していますnew Timestamp(System.currentTimeMillis())

これで、特定の日のonClickカウントを保存する必要があり、すべてのonClickカウントを2つの異なる列に格納するという1つの条件があります。

そのためには、今日のonClicksを見つける必要があります。では、onclicksが発生した時刻が今日であるかどうかを確認するにはどうすればよいですか?つまり、たとえば8月1日は、すべてのonClickカウントを1つの列に入れ、以前のすべてのonClickカウントを別の列に入れたいということです。

*簡単に言うと、今日のクリック数を1つの列に保存し、これまでのクリック数を別の列に保存するため、今日の有効期限が切れた場合は、今日のクリック数を合計クリック数で追加し、today_clicks列を0にカウントしてから、翌日の新規クリック、カウント1 *で開始して、today_clicks列に保存します

どうすればそれを決めることができますか?そのためにどのJavaクラスを使用する必要がありますか?

4

3 に答える 3

4

それがあなたの目的かどうかはわかりません。次の日の開始を取得するには、Calendarを使用できます。

public static Date nextDayStart(Date date) {
    Calendar cal = Calendar.getInstance();
    cal.setTime(date);
    cal.set(Calendar.HOUR_OF_DAY, 0);
    cal.set(Calendar.MINUTE, 0);
    cal.set(Calendar.SECOND, 0);
    cal.set(Calendar.MILLISECOND, 0);
    cal.add(Calendar.DATE, 1);

    return cal.getTime();
}

明日を取得するには:

Date tomorrow = nextDayStart(new Date());

から取得するにTimestampDate:

Timestamp s = new Timestamp(date.getTime());
于 2012-08-01T04:33:16.660 に答える
0

まず、Joda Timeをご覧になることをお勧めします。

次に、Calendar以下を見てみましょう。

Calendar lower = Calendar.getInstance();
lower.setTime(new Date());
lower.set(Calendar.HOUR_OF_DAY, 0);
lower.set(Calendar.MINUTE, 0);
lower.set(Calendar.SECOND, 0);
lower.set(Calendar.MILLISECOND, 0);

Calendar upper = Calendar.getInstance();
upper.setTime(new Date());
upper.set(Calendar.HOUR_OF_DAY, 23);
upper.set(Calendar.MINUTE, 59);
upper.set(Calendar.SECOND, 59);
upper.set(Calendar.MILLISECOND, 99);

Date clickTime = new Date(timeInMillis);
if (clickTime.after(lower.getTime()) && clickTime.before(upper.getTime())) {
    // Is today
}
于 2012-08-01T04:34:36.620 に答える
0

私の理解が正しければ、あなたはデータベースにデータを保存する最良の方法を探しています。今日のクリック数列と今までのクリック数列を維持することにしました。(私はこれに基づいていないかもしれませんが、質問から完全には明らかではありませんでした)

説明したように列から列へとデータを操作しようとするのではなく、1 日あたりのクリック数を維持することによって行うことをお勧めします。

日付 | カウント
------|-------
7月31日| 10876
8月1日| 15721

(ここで、日付は db タイムスタンプ/日付データ型にあります)

これはどのように機能しますか?

起動時に、すべての行をメモリに取り込み、それらのカウントを合計して、必要に応じて今までのクリック数を取得できます。

次に、今日の行に対して特別な処理を行い、適切なコンテキストを今日のクリック数の値で更新します。

1 日のしきい値を超えたかどうかを判断するには、次のようにします。

  1. 「今日」のCalendarインスタンスを維持します(それを呼び出しますtodayCal
  2. クリックを記録するたびに新しいカレンダーを生成します (それを と呼びますclickCal)
  3. todayCalとからCalendar.DAY_OF_YEARをテストしますclickCal
  4. デイロールを特定すると、今日のクリック数をデータベースに保持し、新しい今日のクリック数を初期化します。
  5. 合計クリック数をメモリに保持している場合は、この時点で計算できます。
于 2012-08-01T05:16:06.413 に答える