/** Resets to epoch (1970-01-01) the "date" part of a timestamp. */ public static long resetDate(long timestamp) { return floorMod(timestamp, MILLIS_PER_DAY); }
/** Extracts a time unit from a UNIX date (milliseconds since epoch). */ public static int unixTimestampExtract(TimeUnitRange range, long timestamp) { return unixTimeExtract(range, (int) floorMod(timestamp, MILLIS_PER_DAY)); }
/** Returns the first day of the first week of a year. * Per ISO-8601 it is the Monday of the week that contains Jan 4, * or equivalently, it is a Monday between Dec 29 and Jan 4. * Sometimes it is in the year before the given year. */ private static long firstMondayOfFirstWeek(int year) { final long janFirst = ymdToJulian(year, 1, 1); final long janFirstDow = floorMod(janFirst + 1, 7); // sun=0, sat=6 return janFirst + (11 - janFirstDow) % 7 - 3; }
/** Adds a given number of months to a timestamp, represented as the number * of milliseconds since the epoch. */ public static long addMonths(long timestamp, int m) { final long millis = DateTimeUtils.floorMod(timestamp, DateTimeUtils.MILLIS_PER_DAY); timestamp -= millis; final long x = addMonths((int) (timestamp / DateTimeUtils.MILLIS_PER_DAY), m); return x * DateTimeUtils.MILLIS_PER_DAY + millis; }
public static int subtractMonths(long t0, long t1) { final long millis0 = DateTimeUtils.floorMod(t0, DateTimeUtils.MILLIS_PER_DAY); final int d0 = (int) DateTimeUtils.floorDiv(t0 - millis0, DateTimeUtils.MILLIS_PER_DAY); final long millis1 = DateTimeUtils.floorMod(t1, DateTimeUtils.MILLIS_PER_DAY); final int d1 = (int) DateTimeUtils.floorDiv(t1 - millis1, DateTimeUtils.MILLIS_PER_DAY); int x = subtractMonths(d0, d1); final long d2 = addMonths(d1, x); if (d2 == d0 && millis0 < millis1) { --x; } return x; }
return day; case DOW: return (int) floorMod(julian + 1, 7) + 1; // sun=1, sat=7 case WEEK: long fmofw = firstMondayOfFirstWeek(year);
/** Returns the first day of the first week of a year. * Per ISO-8601 it is the Monday of the week that contains Jan 4, * or equivalently, it is a Monday between Dec 29 and Jan 4. * Sometimes it is in the year before the given year. */ private static long firstMondayOfFirstWeek(int year) { final long janFirst = ymdToJulian(year, 1, 1); final long janFirstDow = floorMod(janFirst + 1, 7); // sun=0, sat=6 return janFirst + (11 - janFirstDow) % 7 - 3; }
/** Adds a given number of months to a timestamp, represented as the number * of milliseconds since the epoch. */ public static long addMonths(long timestamp, int m) { final long millis = DateTimeUtils.floorMod(timestamp, DateTimeUtils.MILLIS_PER_DAY); timestamp -= millis; final long x = addMonths((int) (timestamp / DateTimeUtils.MILLIS_PER_DAY), m); return x * DateTimeUtils.MILLIS_PER_DAY + millis; }
/** Adds a given number of months to a timestamp, represented as the number * of milliseconds since the epoch. */ public static long addMonths(long timestamp, int m) { final long millis = DateTimeUtils.floorMod(timestamp, DateTimeUtils.MILLIS_PER_DAY); timestamp -= millis; final long x = addMonths((int) (timestamp / DateTimeUtils.MILLIS_PER_DAY), m); return x * DateTimeUtils.MILLIS_PER_DAY + millis; }
/** Adds a given number of months to a timestamp, represented as the number * of milliseconds since the epoch. */ public static long addMonths(long timestamp, int m) { final long millis = DateTimeUtils.floorMod(timestamp, DateTimeUtils.MILLIS_PER_DAY); timestamp -= millis; final long x = addMonths((int) (timestamp / DateTimeUtils.MILLIS_PER_DAY), m); return x * DateTimeUtils.MILLIS_PER_DAY + millis; }
/** Returns the first day of the first week of a year. * Per ISO-8601 it is the Monday of the week that contains Jan 4, * or equivalently, it is a Monday between Dec 29 and Jan 4. * Sometimes it is in the year before the given year. */ private static long firstMondayOfFirstWeek(int year) { final long janFirst = ymdToJulian(year, 1, 1); final long janFirstDow = floorMod(janFirst + 1, 7); // sun=0, sat=6 return janFirst + (11 - janFirstDow) % 7 - 3; }
@Override public Time getTime(Calendar calendar) { final Timestamp timestamp = getTimestamp(calendar); if (timestamp == null) { return null; } return new Time( DateTimeUtils.floorMod(timestamp.getTime(), DateTimeUtils.MILLIS_PER_DAY)); }
@Override public Time getTime(Calendar calendar) { final Timestamp timestamp = getTimestamp(calendar); if (timestamp == null) { return null; } return new Time( DateTimeUtils.floorMod(timestamp.getTime(), DateTimeUtils.MILLIS_PER_DAY)); }
@Override public Time getTime(Calendar calendar) { final Timestamp timestamp = getTimestamp(calendar); if (timestamp == null) { return null; } return new Time( DateTimeUtils.floorMod(timestamp.getTime(), DateTimeUtils.MILLIS_PER_DAY)); }
/** Adds a given number of months to a timestamp, represented as the number * of milliseconds since the epoch. */ public static long addMonths(long timestamp, int m) { final long millis = DateTimeUtils.floorMod(timestamp, DateTimeUtils.MILLIS_PER_DAY); timestamp -= millis; final long x = addMonths((int) (timestamp / DateTimeUtils.MILLIS_PER_DAY), m); return x * DateTimeUtils.MILLIS_PER_DAY + millis; }
public static TimeWithTimeZoneString fromMillisOfDay(int i) { return new TimeWithTimeZoneString( DateTimeUtils.unixTimeToString(i) + " " + DateTimeUtils.UTC_ZONE.getID()) .withMillis((int) DateTimeUtils.floorMod(i, 1000)); }
/** Creates a TimestampWithTimeZoneString that is a given number of milliseconds since * the epoch UTC. */ public static TimestampWithTimeZoneString fromMillisSinceEpoch(long millis) { return new TimestampWithTimeZoneString( DateTimeUtils.unixTimestampToString(millis) + " " + DateTimeUtils.UTC_ZONE.getID()) .withMillis((int) DateTimeUtils.floorMod(millis, 1000)); }
/** Creates a TimestampString that is a given number of milliseconds since * the epoch. */ public static TimestampString fromMillisSinceEpoch(long millis) { return new TimestampString(DateTimeUtils.unixTimestampToString(millis)) .withMillis((int) DateTimeUtils.floorMod(millis, 1000)); }
/** Creates a TimestampString that is a given number of milliseconds since * the epoch. */ public static TimestampString fromMillisSinceEpoch(long millis) { return new TimestampString(DateTimeUtils.unixTimestampToString(millis)) .withMillis((int) DateTimeUtils.floorMod(millis, 1000)); }
@Test public void testFloorMod() { assertThat(floorMod(13, 3), is(1L)); assertThat(floorMod(12, 3), is(0L)); assertThat(floorMod(11, 3), is(2L)); assertThat(floorMod(-13, 3), is(2L)); assertThat(floorMod(-12, 3), is(0L)); assertThat(floorMod(-11, 3), is(1L)); assertThat(floorMod(0, 3), is(0L)); assertThat(floorMod(1, 3), is(1L)); assertThat(floorMod(-1, 3), is(2L)); }