1

さて、私は毎日午後 3 時に通知するアラームの作成に取り組んでいますが、ユーザーが AM/PM と時間/分の間で自由に変更できるようにしたいと考えています。私はおそらく a を使用しますがTimePicker、これは私がこれまでに持っている私のコードです:

    public void startAlarm() {


            Intent intent = new Intent(currentDay.this, AlarmReceiver.class);
            PendingIntent sender = PendingIntent.getBroadcast(currentDay.this,0, intent,0);

            long firstTime = SystemClock.elapsedRealtime();
            firstTime += 15*1000;


            AlarmManager am = (AlarmManager)getSystemService(ALARM_SERVICE);
            am.setRepeating(AlarmManager.ELAPSED_REALTIME_WAKEUP,firstTime,AlarmManager.INTERVAL_DAY, sender);


        }

だから、私は次の行に沿って何かを使用するつもりだと思います:

Calendar cal = Calendar.getInstance();
cal.set(Calendar.HOUR_OF_DAY, 19);
cal.set(Calendar.MINUTE, 45);

そして使用する

cal.getTimeInMillis()

しかし、これはうまくいきません。ありがとう!

編集:つまり、簡単に言うと、現在の時刻を取得する方法を知っており、それに15秒を追加しますが、たとえば午後5時14分などに機能する明確な時間を持ちたいのですが、私が試したことはすべて機能しません働かない

4

1 に答える 1

2

私が知る限り、現在の日付/時刻の Calendar インスタンスを取得していて、Calendar インスタンスの時刻を明示的に 19:45 に設定するのではなく、それに 19 時間 45 分を追加しています。それはあなたがすることを意味するものですか?明示的な時刻を設定するには、Calendar set() メソッドを使用する必要があります。

カレンダーのAPIリファレンスより

Calendar の getInstance メソッドは、ロケールがシステム設定に基づいており、時刻フィールドが現在の日付と時刻で初期化されているカレンダーを返します。

    Calendar rightNow = Calendar.getInstance()
public abstract void add (int field, int value)

Since: API Level 1
Adds the specified amount to a Calendar field.
Parameters
    field   the Calendar field to modify.
    value   the amount to add to the field.
    Throws IllegalArgumentException if field is DST_OFFSET or ZONE_OFFSET.

編集:現地時間をUTCに変換するには...

Calendar cal = Calendar.getInstance();
cal.set(Calendar.HOUR_OF_DAY, 19);
cal.set(Calendar.MINUTE, 45);
int offset = cal.getTimeZone().getOffset(cal.getTimeInMillis());
firstTime = cal.getTimeInMillis() + offset;

注: 上記を試したことはありません。もっと簡単な方法があるかもしれませんが、うまくいくはずです。私のタイムゾーンは GMT/UTC であるため、このようなものをテストするのは困難です。

于 2010-12-17T03:04:23.993 に答える