FileDocCategorySizeDatePackage
Duration.javaAPI DocAndroid 1.5 API3967Wed May 06 22:42:48 BST 2009com.android.providers.calendar

Duration

public class Duration extends Object
According to RFC2445, durations are like this: WEEKS | DAYS [ HOURS [ MINUTES [ SECONDS ] ] ] | HOURS [ MINUTES [ SECONDS ] ] it doesn't specifically, say, but this sort of implies that you can't have 70 seconds.

Fields Summary
public int
sign
public int
weeks
public int
days
public int
hours
public int
minutes
public int
seconds
Constructors Summary
public Duration()

        sign = 1;
    
Methods Summary
public voidaddTo(java.util.Calendar cal)
Add this to the calendar provided, in place, in the calendar.

        cal.add(Calendar.DAY_OF_MONTH, sign*weeks*7);
        cal.add(Calendar.DAY_OF_MONTH, sign*days);
        cal.add(Calendar.HOUR, sign*hours);
        cal.add(Calendar.MINUTE, sign*minutes);
        cal.add(Calendar.SECOND, sign*seconds);
    
public longaddTo(long dt)

        return dt + getMillis();
    
public longgetMillis()

        long factor = 1000 * sign;
        return factor * ((7*24*60*60*weeks)
                + (24*60*60*days)
                + (60*60*hours)
                + (60*minutes)
                + seconds);
    
public voidparse(java.lang.String str)
Parse according to RFC2445 ss4.3.6. (It's actually a little loose with its parsing, for better or for worse)

        sign = 1;
        weeks = 0;
        days = 0;
        hours = 0;
        minutes = 0;
        seconds = 0;

        int len = str.length();
        int index = 0;
        char c;

        if (len < 1) {
            return ;
        }

        c = str.charAt(0);
        if (c == '-") {
            sign = -1;
            index++;
        }
        else if (c == '+") {
            index++;
        }

        if (len < index) {
            return ;
        }

        c = str.charAt(index);
        if (c != 'P") {
            throw new DateException (
                    "Duration.parse(str='" + str + "') expected 'P' at index="
                    + index);
        }
        index++;

        int n = 0;
        for (; index < len; index++) {
            c = str.charAt(index);
            if (c >= '0" && c <= '9") {
                n *= 10;
                n += ((int)(c-'0"));
            }
            else if (c == 'W") {
                weeks = n;
                n = 0;
            }
            else if (c == 'H") {
                hours = n;
                n = 0;
            }
            else if (c == 'M") {
                minutes = n;
                n = 0;
            }
            else if (c == 'S") {
                seconds = n;
                n = 0;
            }
            else if (c == 'D") {
                days = n;
                n = 0;
            }
            else if (c == 'T") {
            }
            else {
                throw new DateException (
                        "Duration.parse(str='" + str + "') unexpected char '"
                        + c + "' at index=" + index);
            }
        }