4

私はすべてのドキュメントを読みましたが、日付関数やその欠如を実際に説明するには多すぎるようには見えません。

トリガーにミリ秒 (ms) 単位の時間を必要とする AlarmManger を実装しようとしています。テストするために、現在の時間を取り、5 秒を追加しましたが、それは良好でした。

// get a Calendar object with current time
 Calendar cal = Calendar.getInstance();
 // add 5 minutes to the calendar object
 cal.add(Calendar.SECOND, 5);

日付と時刻がある場合、その時刻のミリ秒を取得するにはどうすればよいですか。

「2011/3/2 08:15:00」のように

それをミリ秒に変換するにはどうすればよいですか?

4

2 に答える 2

14

この方法を使用します。

例:

2011 年 3 月 2 日 08:15:00 のメソッド呼び出し

D2MS( 3, 2, 2011, 8, 15, 0);

方法

public long D2MS(int month, int day, int year, int hour, int minute, int seconds) { 
    Calendar c = Calendar.getInstance();
    c.set(year, month, day, hour, minute, seconds);

    return c.getTimeInMillis();  
} 
于 2011-03-02T02:09:16.860 に答える
3

AlarmManager を使用する場合、アラームを設定する際に 2 つの選択肢があります。1 つ目は、デバイスの再起動以降のミリ秒単位の時間です (そのオプションを理解していません)。または、「絶対」時間が必要な場合は、UTC 時間をミリ秒単位で指定する必要があります。 .

私はこれがうまくいくはずだと思います-私は過去に似たようなことをしました...

public long getUtcTimeInMillis(String datetime) {
    SimpleDateFormat sdf = new SimpleDateFormat("MM/dd/yyyy HH:mm:ss");
    Date date = sdf.parse(datetime);

    // getInstance() provides TZ info which can be used to adjust to UTC
    Calendar cal = Calendar.getInstance();
    cal.setTime(date);

    // Get timezone offset then use it to adjust the return value
    int offset = cal.getTimeZone().getOffset(cal.getTimeInMillis());
    return cal.getTimeInMillis() + offset;
}

yyyy-MM-dd HH:mm:ss個人的には、グローバルなユーザーに対応したい場合は、使用する日付/時刻文字列など、ローカライズされていない形式を使用することをお勧めします。

ISO 8601 は国際規格ですyyyy-MM-dd HH:mm:ss.SSSZが、私は通常そこまでは行きません。

于 2011-03-02T03:31:33.360 に答える