package org.jcodec.containers.mkv.boxes; import java.nio.ByteBuffer; import java.util.Date; /** * This class is part of JCodec ( www.jcodec.org ) This software is distributed under FreeBSD License * * EBML IO implementation * * @author The JCodec project * */ public class EbmlDate extends EbmlSint { private static final int NANOSECONDS_IN_A_SECOND = 1000000000; private static final int MILISECONDS_IN_A_SECOND = 1000; private static final int NANOSECONDS_IN_A_MILISECOND = NANOSECONDS_IN_A_SECOND / MILISECONDS_IN_A_SECOND; public static long MILISECONDS_SINCE_UNIX_EPOCH_START = 978307200; // 2001/01/01 00:00:00 UTC public EbmlDate(byte[] id) { super(id); } public void setDate(Date value) { setMiliseconds(value.getTime()); } public Date getDate() { long val = getLong(); val = val / NANOSECONDS_IN_A_MILISECOND + MILISECONDS_SINCE_UNIX_EPOCH_START; return new Date(val); } private void setMiliseconds(long milliseconds) { setLong((milliseconds - MILISECONDS_SINCE_UNIX_EPOCH_START) * NANOSECONDS_IN_A_MILISECOND); } @Override public void setLong(long value) { this.data = ByteBuffer.allocate(8); this.data.putLong(value); this.data.flip(); } }