Android毫秒时间

时间:2011-03-02 01:55:39

标签: android calendar alarmmanager milliseconds

我已经阅读了所有的文档,并没有太多的东西来真正解释日期函数,或者缺少日期函数。

我正在尝试实现AlarmManger,它需要触发器以毫秒(ms)为单位的时间。为了测试,我花了当前的时间并增加了5秒,这很好。

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

如果我有一个日期和时间,我将如何获得那段时间的ms。

喜欢“3/2/2011 08:15:00”

如何将其转换为毫秒?

2 个答案:

答案 0 :(得分:13)

使用此方法。

示例:

3/2/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();  
} 

答案 1 :(得分:3)

使用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,但我通常不会那么远。