Все,
Я работаю с двоичной спецификацией, поля TimeStamp которой определены как «Миллисекунды с 1 января 2000 года по UTC времени».Я делаю следующее вычисление:
public static final TimeZone UTC = TimeZone.getTimeZone("UTC") ;
public static final Calendar Y2K_EPOCH = Calendar.getInstance(UTC);
static {
Y2K_EPOCH.clear();
// Month is 0 based; day is 1 based. Reset time to be first second of January 1, 2000
Y2K_EPOCH.set(2000, 0, 1, 0, 0, 0);
}
public static final long MS_BETWEEN_ORIGINAL_EPOCH_AND_Y2K_EPOCH = Y2K_EPOCH.getTimeInMillis();
public static long getMillisecondsSinceY2K(Date date) {
long time = date.getTime();
if (time < MS_BETWEEN_ORIGINAL_EPOCH_AND_Y2K_EPOCH) {
throw new IllegalArgumentException("Date must occur after January 1, 2000");
}
return time - MS_BETWEEN_ORIGINAL_EPOCH_AND_Y2K_EPOCH;
}
Мой вопрос: правильный ли это способ преобразования между стандартными объектами Java Date и этим типом данных?Есть ли лучший способ сделать это?Я знаю о времени Joda, но я бы не стал вносить эту внешнюю зависимость, если смогу помочь.