/*
 * TDatime.java
 *
 * Created on January 18, 2001, 5:19 PM
 */
package hep.io.root.reps;

import hep.io.root.core.AbstractRootObject;
import hep.io.root.core.RootInput;

import java.util.Date;
import java.util.GregorianCalendar;


/**
 *
 * @author  tonyj
 * @version $Id: TDatimeRep.java,v 1.3 2004/06/28 15:21:24 tonyj Exp $
 */
public abstract class TDatimeRep extends AbstractRootObject implements hep.io.root.interfaces.TDatime
{
   private Date date;
   private int fDatime;

   public Date getDate()
   {
      if (date == null)
      {
         // Root times are seconds since Jan 1 1995 (in timeZone??)
         int year = (fDatime >> 26) + 1995;
         int month = ((fDatime << 6) >> 28) - 1;
         int day = (fDatime << 10) >> 27;
         int hour = (fDatime << 15) >> 27;
         int min = (fDatime << 20) >> 26;
         int sec = (fDatime << 26) >> 26;
         date = new GregorianCalendar(year, month, day, hour, min, sec).getTime();
      }
      return date;
   }

   public int getDatime()
   {
      return fDatime;
   }

   public void readMembers(RootInput in) throws java.io.IOException
   {
      fDatime = in.readInt();
   }

   public String toString()
   {
      return getDate().toString();
   }
}
