Refine search
@Deprecated // to be removed before 2.0 public static Calendar parseDateFormat(String s, String pattern, TimeZone tz) { return parseDateFormat(s, new SimpleDateFormat(pattern, Locale.ROOT), tz); }
/** Adds a given number of months to a date, represented as the number of * days since the epoch. */ public static int addMonths(int date, int m) { int y0 = (int) DateTimeUtils.unixDateExtract(TimeUnitRange.YEAR, date); int m0 = (int) DateTimeUtils.unixDateExtract(TimeUnitRange.MONTH, date); int d0 = (int) DateTimeUtils.unixDateExtract(TimeUnitRange.DAY, date); int y = m / 12; y0 += y; m0 += m - y * 12; int last = lastDay(y0, m0); if (d0 > last) { d0 = 1; if (++m0 > 12) { m0 = 1; ++y0; } } return DateTimeUtils.ymdToUnixDate(y0, m0, d0); }
@Deprecated // to be removed before 2.0 public static PrecisionTime parsePrecisionDateTimeLiteral( String s, String pattern, TimeZone tz) { assert pattern != null; return parsePrecisionDateTimeLiteral(s, new SimpleDateFormat(pattern, Locale.ROOT), tz, 3); }
/** 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)); }
/** 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; }
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; }
SqlTimestampLiteral parseTimestampLiteral(String s, SqlParserPos pos) throws ParseException { String dateStr = SqlParserUtil.parseString(s); DateTimeUtils.PrecisionTime pt = DateTimeUtils.parsePrecisionDateTimeLiteral( dateStr, DateTimeUtils.TIMESTAMP_FORMAT_STRING, DateTimeUtils.GMT_ZONE); if (null == pt) { throw SqlUtil.newContextException(pos, RESOURCE.illegalLiteral("TIMESTAMP", s, RESOURCE.badFormat(DateTimeUtils.TIMESTAMP_FORMAT_STRING).str())); } return SqlLiteral.createTimestamp(pt.getCalendar(), pt.getPrecision(), pos); }
/** Adds a given number of months to a date, represented as the number of * days since the epoch. */ public static int addMonths(int date, int m) { int y0 = (int) DateTimeUtils.unixDateExtract(TimeUnitRange.YEAR, date); int m0 = (int) DateTimeUtils.unixDateExtract(TimeUnitRange.MONTH, date); int d0 = (int) DateTimeUtils.unixDateExtract(TimeUnitRange.DAY, date); int y = m / 12; y0 += y; m0 += m - y * 12; int last = lastDay(y0, m0); if (d0 > last) { d0 = last; } return DateTimeUtils.ymdToUnixDate(y0, m0, d0); }
public static SqlDateLiteral parseDateLiteral(String s, SqlParserPos pos) { final String dateStr = parseString(s); final Calendar cal = DateTimeUtils.parseDateFormat(dateStr, Format.PER_THREAD.get().date, DateTimeUtils.UTC_ZONE); if (cal == null) { throw SqlUtil.newContextException(pos, RESOURCE.illegalLiteral("DATE", s, RESOURCE.badFormat(DateTimeUtils.DATE_FORMAT_STRING).str())); } final DateString d = DateString.fromCalendarFields(cal); return SqlLiteral.createDate(d, pos); }
/** 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)); }
SqlTimeLiteral parseTimeLiteral(String s, SqlParserPos pos) throws ParseException { String dateStr = SqlParserUtil.parseString(s); DateTimeUtils.PrecisionTime pt = DateTimeUtils.parsePrecisionDateTimeLiteral( dateStr, DateTimeUtils.TIME_FORMAT_STRING, DateTimeUtils.GMT_ZONE); if (null == pt) { throw SqlUtil.newContextException(pos, RESOURCE.illegalLiteral("TIME", s, RESOURCE.badFormat(DateTimeUtils.TIME_FORMAT_STRING).str())); } return SqlLiteral.createTime(pt.getCalendar(), pt.getPrecision(), pos); }
public static long unixTimestamp(int year, int month, int day, int hour, int minute, int second) { final int date = ymdToUnixDate(year, month, day); return (long) date * MILLIS_PER_DAY + (long) hour * MILLIS_PER_HOUR + (long) minute * MILLIS_PER_MINUTE + (long) second * MILLIS_PER_SECOND; }
public static TimeWithTimeZoneString fromMillisOfDay(int i) { return new TimeWithTimeZoneString( DateTimeUtils.unixTimeToString(i) + " " + DateTimeUtils.UTC_ZONE.getID()) .withMillis((int) DateTimeUtils.floorMod(i, 1000)); }
public static long timestampStringToUnixDate(String s) { final long d; final long t; s = s.trim(); int space = s.indexOf(' '); if (space >= 0) { d = dateStringToUnixDate(s.substring(0, space)); t = timeStringToUnixDate(s, space + 1); } else { d = dateStringToUnixDate(s); t = 0; } return d * MILLIS_PER_DAY + t; }
private void checkDateString(String s, int d) { assertThat(unixDateToString(d), is(s)); assertThat(dateStringToUnixDate(s), is(d)); }
@Test public void testDateConversion() { for (int i = 0; i < 4000; ++i) { for (int j = 1; j <= 12; ++j) { String date = String.format(Locale.ENGLISH, "%04d-%02d-28", i, j); assertThat(unixDateToString(ymdToUnixDate(i, j, 28)), is(date)); } } }
/** Modulo, always returning a non-negative result. */ public static long floorMod(long x, long y) { return x - floorDiv(x, y) * y; }
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); if (julian < fmofw) { fmofw = firstMondayOfFirstWeek(year - 1); final long janFirst = ymdToJulian(year, 1, 1); return (int) (julian - janFirst) + 1; case CENTURY: