Class HealthInterval
java.lang.Object
com.codename1.health.HealthInterval
The bucket width of an AggregateQuery -- "per hour", "per calendar
day", "per calendar month".
Fixed durations and calendar periods are not the same thing
A calendar day is 23 or 25 hours across a daylight-saving transition,
and a month is 28 to 31 days. Bucketing by a fixed 86400000 therefore
drifts against the dates a user sees in your UI, silently, twice a
year. Both platforms model the distinction natively -- Health Connect
splits aggregateGroupByDuration from aggregateGroupByPeriod, and
HealthKit takes DateComponents -- so this API keeps it too.
Calendar-based intervals require an explicit TimeZone. Nothing here
reads the JVM default, because a server-side default of UTC would put a
user's evening walk into the wrong day.
-
Method Summary
Modifier and TypeMethodDescriptionlongbucketStart(long millis, long anchorMillis) The start of the bucket that containsmillis.static HealthIntervalcalendarDays(int days, TimeZone tz) Calendar days intz, aligned to local midnight.static HealthIntervalcalendarMonths(int months, TimeZone tz) Calendar months intz, aligned to local midnight on the first of the month.static HealthIntervalcalendarWeeks(int weeks, TimeZone tz, int firstDayOfWeek) Calendar weeks intz, aligned tofirstDayOfWeek(ajava.util.Calendarday constant such asCalendar.MONDAY).longThe fixed width in milliseconds, or 0 whenisCalendarBased().The time zone calendar boundaries are computed in, or null for a fixed-duration interval.static HealthIntervalhours(int hours) A fixed number of hours.booleantruewhen this interval follows the calendar rather than a fixed number of milliseconds.static HealthIntervalmillis(long millis) A fixed number of milliseconds.static HealthIntervalminutes(int minutes) A fixed number of minutes.longnextBoundary(long bucketStartMillis) The start of the bucket after the one starting atbucketStartMillis.toString()Returns a string representation of the object.
-
Method Details
-
millis
A fixed number of milliseconds. -
minutes
A fixed number of minutes. -
hours
A fixed number of hours. -
calendarDays
Calendar days intz, aligned to local midnight. Correct across daylight-saving transitions. -
calendarWeeks
Calendar weeks intz, aligned tofirstDayOfWeek(ajava.util.Calendarday constant such asCalendar.MONDAY). The first day of the week is explicit because it differs by locale and silently guessing it shifts every bucket boundary. -
calendarMonths
Calendar months intz, aligned to local midnight on the first of the month. -
isCalendarBased
public boolean isCalendarBased()truewhen this interval follows the calendar rather than a fixed number of milliseconds. -
getFixedMillis
public long getFixedMillis()The fixed width in milliseconds, or 0 whenisCalendarBased(). -
getTimeZone
The time zone calendar boundaries are computed in, or null for a fixed-duration interval. -
bucketStart
public long bucketStart(long millis, long anchorMillis) The start of the bucket that containsmillis. For a fixed interval this is anchored onanchorMillis; for a calendar interval it snaps to the local period boundary andanchorMillisis ignored. -
nextBoundary
public long nextBoundary(long bucketStartMillis) The start of the bucket after the one starting atbucketStartMillis. Bucketn's exclusive end is bucketn+1's inclusive start, so buckets tile with no gap and no overlap even when their widths differ. -
toString
Description copied from class:ObjectReturns a string representation of the object. In general, the toString method returns a string that "textually represents" this object. The result should be a concise but informative representation that is easy for a person to read. It is recommended that all subclasses override this method. The toString method for class Object returns a string consisting of the name of the class of which the object is an instance, the at-sign character `@', and the unsigned hexadecimal representation of the hash code of the object. In other words, this method returns a string equal to the value of: getClass().getName() + '@' + Integer.toHexString(hashCode())
-