1d26bea3a1498d1b327ae37cc796fb8cd67e9c977Adam Lesinski/** 2d26bea3a1498d1b327ae37cc796fb8cd67e9c977Adam Lesinski * Copyright (C) 2014 The Android Open Source Project 3d26bea3a1498d1b327ae37cc796fb8cd67e9c977Adam Lesinski * 4d26bea3a1498d1b327ae37cc796fb8cd67e9c977Adam Lesinski * Licensed under the Apache License, Version 2.0 (the "License"); you may not 5d26bea3a1498d1b327ae37cc796fb8cd67e9c977Adam Lesinski * use this file except in compliance with the License. You may obtain a copy 6d26bea3a1498d1b327ae37cc796fb8cd67e9c977Adam Lesinski * of the License at 7d26bea3a1498d1b327ae37cc796fb8cd67e9c977Adam Lesinski * 8d26bea3a1498d1b327ae37cc796fb8cd67e9c977Adam Lesinski * http://www.apache.org/licenses/LICENSE-2.0 9d26bea3a1498d1b327ae37cc796fb8cd67e9c977Adam Lesinski * 10d26bea3a1498d1b327ae37cc796fb8cd67e9c977Adam Lesinski * Unless required by applicable law or agreed to in writing, software 11d26bea3a1498d1b327ae37cc796fb8cd67e9c977Adam Lesinski * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT 12d26bea3a1498d1b327ae37cc796fb8cd67e9c977Adam Lesinski * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the 13d26bea3a1498d1b327ae37cc796fb8cd67e9c977Adam Lesinski * License for the specific language governing permissions and limitations 14d26bea3a1498d1b327ae37cc796fb8cd67e9c977Adam Lesinski * under the License. 15d26bea3a1498d1b327ae37cc796fb8cd67e9c977Adam Lesinski */ 16d26bea3a1498d1b327ae37cc796fb8cd67e9c977Adam Lesinskipackage com.android.server.usage; 17d26bea3a1498d1b327ae37cc796fb8cd67e9c977Adam Lesinski 18d26bea3a1498d1b327ae37cc796fb8cd67e9c977Adam Lesinski/** 19d26bea3a1498d1b327ae37cc796fb8cd67e9c977Adam Lesinski * A handy calendar object that knows nothing of Locale's or TimeZones. This simplifies 20d26bea3a1498d1b327ae37cc796fb8cd67e9c977Adam Lesinski * interval book-keeping. It is *NOT* meant to be used as a user-facing calendar, as it has 21d26bea3a1498d1b327ae37cc796fb8cd67e9c977Adam Lesinski * no concept of Locale or TimeZone. 22d26bea3a1498d1b327ae37cc796fb8cd67e9c977Adam Lesinski */ 23d26bea3a1498d1b327ae37cc796fb8cd67e9c977Adam Lesinskipublic class UnixCalendar { 247cba1d46d37b2d1ef85a67d8cfab6b37ce0c4eb3Adam Lesinski public static final long DAY_IN_MILLIS = 24 * 60 * 60 * 1000; 257cba1d46d37b2d1ef85a67d8cfab6b37ce0c4eb3Adam Lesinski public static final long WEEK_IN_MILLIS = 7 * DAY_IN_MILLIS; 267cba1d46d37b2d1ef85a67d8cfab6b37ce0c4eb3Adam Lesinski public static final long MONTH_IN_MILLIS = 30 * DAY_IN_MILLIS; 277cba1d46d37b2d1ef85a67d8cfab6b37ce0c4eb3Adam Lesinski public static final long YEAR_IN_MILLIS = 365 * DAY_IN_MILLIS; 28d26bea3a1498d1b327ae37cc796fb8cd67e9c977Adam Lesinski private long mTime; 29d26bea3a1498d1b327ae37cc796fb8cd67e9c977Adam Lesinski 30d26bea3a1498d1b327ae37cc796fb8cd67e9c977Adam Lesinski public UnixCalendar(long time) { 31d26bea3a1498d1b327ae37cc796fb8cd67e9c977Adam Lesinski mTime = time; 32d26bea3a1498d1b327ae37cc796fb8cd67e9c977Adam Lesinski } 33d26bea3a1498d1b327ae37cc796fb8cd67e9c977Adam Lesinski 34d26bea3a1498d1b327ae37cc796fb8cd67e9c977Adam Lesinski public void addDays(int val) { 35d26bea3a1498d1b327ae37cc796fb8cd67e9c977Adam Lesinski mTime += val * DAY_IN_MILLIS; 36d26bea3a1498d1b327ae37cc796fb8cd67e9c977Adam Lesinski } 37d26bea3a1498d1b327ae37cc796fb8cd67e9c977Adam Lesinski 38d26bea3a1498d1b327ae37cc796fb8cd67e9c977Adam Lesinski public void addWeeks(int val) { 39d26bea3a1498d1b327ae37cc796fb8cd67e9c977Adam Lesinski mTime += val * WEEK_IN_MILLIS; 40d26bea3a1498d1b327ae37cc796fb8cd67e9c977Adam Lesinski } 41d26bea3a1498d1b327ae37cc796fb8cd67e9c977Adam Lesinski 42d26bea3a1498d1b327ae37cc796fb8cd67e9c977Adam Lesinski public void addMonths(int val) { 43d26bea3a1498d1b327ae37cc796fb8cd67e9c977Adam Lesinski mTime += val * MONTH_IN_MILLIS; 44d26bea3a1498d1b327ae37cc796fb8cd67e9c977Adam Lesinski } 45d26bea3a1498d1b327ae37cc796fb8cd67e9c977Adam Lesinski 46d26bea3a1498d1b327ae37cc796fb8cd67e9c977Adam Lesinski public void addYears(int val) { 47d26bea3a1498d1b327ae37cc796fb8cd67e9c977Adam Lesinski mTime += val * YEAR_IN_MILLIS; 48d26bea3a1498d1b327ae37cc796fb8cd67e9c977Adam Lesinski } 49d26bea3a1498d1b327ae37cc796fb8cd67e9c977Adam Lesinski 50d26bea3a1498d1b327ae37cc796fb8cd67e9c977Adam Lesinski public void setTimeInMillis(long time) { 51d26bea3a1498d1b327ae37cc796fb8cd67e9c977Adam Lesinski mTime = time; 52d26bea3a1498d1b327ae37cc796fb8cd67e9c977Adam Lesinski } 53d26bea3a1498d1b327ae37cc796fb8cd67e9c977Adam Lesinski 54d26bea3a1498d1b327ae37cc796fb8cd67e9c977Adam Lesinski public long getTimeInMillis() { 55d26bea3a1498d1b327ae37cc796fb8cd67e9c977Adam Lesinski return mTime; 56d26bea3a1498d1b327ae37cc796fb8cd67e9c977Adam Lesinski } 57d26bea3a1498d1b327ae37cc796fb8cd67e9c977Adam Lesinski} 58