| /* |
| ****************************************************************************** |
| * Copyright (C) 2007, International Business Machines Corporation and * |
| * others. All Rights Reserved. * |
| ****************************************************************************** |
| */ |
| |
| package com.ibm.icu.impl.duration; |
| |
| /** |
| * 'Enum' for individual time units. Not an actual enum so that it can be |
| * used by Java 1.4. |
| */ |
| public final class TimeUnit { |
| /** The name of this unit, a key, not for localization. */ |
| final String name; |
| |
| /** The ordinal of the unit, in order from largest to smallest. */ |
| final byte ordinal; |
| |
| /** Private constructor */ |
| private TimeUnit(String name, int ordinal) { |
| this.name = name; |
| this.ordinal = (byte) ordinal; |
| } |
| |
| public String toString() { |
| return name; |
| } |
| |
| /** Represents a year. */ |
| public static final TimeUnit YEAR = new TimeUnit("year", 0); |
| |
| /** Represents a month. */ |
| public static final TimeUnit MONTH = new TimeUnit("month", 1); |
| |
| /** Represents a week. */ |
| public static final TimeUnit WEEK = new TimeUnit("week", 2); |
| |
| /** Represents a day. */ |
| public static final TimeUnit DAY = new TimeUnit("day", 3); |
| |
| /** Represents an hour. */ |
| public static final TimeUnit HOUR = new TimeUnit("hour", 4); |
| |
| /** Represents a minute. */ |
| public static final TimeUnit MINUTE = new TimeUnit("minute", 5); |
| |
| /** Represents a second. */ |
| public static final TimeUnit SECOND = new TimeUnit("second", 6); |
| |
| /** Represents a millisecond. */ |
| public static final TimeUnit MILLISECOND = new TimeUnit("millisecond", 7); |
| |
| /** Returns the next larger time unit, or null if this is the largest. */ |
| public TimeUnit larger() { |
| return ordinal == 0 ? null : units[ordinal - 1]; |
| } |
| |
| /** Returns the next smaller time unit, or null if this is the smallest. */ |
| public TimeUnit smaller() { |
| return ordinal == units.length - 1 ? null : units[ordinal + 1]; |
| } |
| |
| /** The list of units, in order from largest to smallest. */ |
| static final TimeUnit[] units = { |
| YEAR, MONTH, WEEK, DAY, HOUR, MINUTE, SECOND, MILLISECOND |
| }; |
| |
| /** Returns the ordinal value of this time unit, largest is 0. **/ |
| public int ordinal() { |
| return ordinal; |
| } |
| |
| /** Approximate, durations for the units independent of the time at which |
| they are measured */ |
| |
| // hack, initialization long array using expressions with 'L' at end doesn't |
| // compute entire expression using 'long'. differs from initializtion of |
| // a single constant |
| static final long[] approxDurations = { |
| 36525L*24*60*60*10, 3045*24*60*60*10L, 7*24*60*60*1000L, 24*60*60*1000L, |
| 60*60*1000L, 60*1000L, 1000L, 1L |
| }; |
| } |