全て、
TimeStampフィールドが「2000年1月1日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の時間について知っていますが、私がそれを助けることができれば、その外部依存関係を持ち込みたくありません。