Android Миллисекунды по времени - PullRequest
4 голосов
/ 02 марта 2011

Я прочитал все документы, и, кажется, их не так уж много, чтобы действительно объяснить функции даты или их отсутствие.

Я пытаюсь реализовать 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);

Если бы у меня была дата и время, как бы я получил за это время мс.

Как "02.03.2011 08:15:00"

Как мне превратить это в миллисекунды?

Ответы [ 2 ]

13 голосов
/ 02 марта 2011

Используйте этот метод.

пример:

вызов метода для 02.03.2011 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();  
} 
3 голосов
/ 02 марта 2011

При использовании AlarmManager у вас есть два варианта установки будильника - первый - это время в мс с момента перезагрузки устройства (не понимаю эту опцию) или, если вы хотите «абсолютное» время, вам нужно указать 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, но я обычно не захожу так далеко.

...