/* * (C) 2006 - Geotechnical Software Services * * This code is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This code is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this program; if not, write to the Free * Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, * MA 02111-1307, USA. */ package no.geosoft.cc.util; import java.util.Date; import java.util.Calendar; import java.util.GregorianCalendar; import java.io.Serializable; /** * A class representing a moment in time. Extends Day which represents * the day of the moment, and defines the time within the day to * millisecond accuracy. * * @author GeoSoft (<a href="mailto:info@geosoft.no">info@geosoft.no</a>) */ public class Time extends Day { /** * Instantiate a Time object. * The time is lenient meaning that illegal day parameters can be * specified and results in a recomputed day with legal month/day * values. * * @param year Year of this time * @param month Month of this time * @param dayOfMonth Day of month of this time. * @param hours Hours of this time [0-23] * @param minutes Minutes of this time [0-23] * @param seconds Seconds of this time [0-23] */ public Time (int year, int month, int dayOfMonth, int hours, int minutes, int seconds) { super (year, month, dayOfMonth); setHours (hours); setMinutes (minutes); setSeconds (seconds); } public Time (Day day, int hours, int minutes, int seconds) { this (day.getYear(), day.getMonth(), day.getDayOfMonth(), hours, minutes, seconds); } public Time (int hours, int minutes, int seconds) { this (new Day(), hours, minutes, seconds); } public Time() { calendar_ = new GregorianCalendar(); // Now } public void setDay (Day day) { setYear (day.getYear()); setMonth (day.getMonth()); setDayOfMonth (day.getDayOfMonth()); } public void setHours (int hours) { calendar_.set (Calendar.HOUR_OF_DAY, hours); } public int getHours () { return calendar_.get (Calendar.HOUR_OF_DAY); } public void setMinutes (int minutes) { calendar_.set (Calendar.MINUTE, minutes); } public int getMinutes() { return calendar_.get (Calendar.MINUTE); } public void setSeconds (int seconds) { calendar_.set (Calendar.SECOND, seconds); } public int getSeconds() { return calendar_.get (Calendar.SECOND); } public void setMilliSeconds (int milliSeconds) { calendar_.set (Calendar.MILLISECOND, milliSeconds); } public int getMilliSeconds() { return calendar_.get (Calendar.MILLISECOND); } public boolean isAfter (Time time) { return calendar_.after (time.calendar_); } public boolean isBefore (Time time) { return calendar_.before (time.calendar_); } public boolean equals (Time time) { return calendar_.equals (time.calendar_); } public void addHours (int nHours) { calendar_.add (Calendar.HOUR_OF_DAY, nHours); } public void addMinutes (int nMinutes) { calendar_.add (Calendar.MINUTE, nMinutes); } public void addSeconds (int nSeconds) { calendar_.add (Calendar.SECOND, nSeconds); } public void addMilliSeconds (int nMilliSeconds) { calendar_.add (Calendar.MILLISECOND, nMilliSeconds); } public long milliSecondsBetween (Time time) { long millisBetween = calendar_.getTime().getTime() - time.calendar_.getTime().getTime(); return millisBetween; } public double secondsBetween (Time time) { long millisBetween = calendar_.getTime().getTime() - time.calendar_.getTime().getTime(); return millisBetween / 1000; } public double minutesBetween (Time time) { long millisBetween = calendar_.getTime().getTime() - time.calendar_.getTime().getTime(); return millisBetween / (1000 * 60); } public double hoursBetween (Time time) { long millisBetween = calendar_.getTime().getTime() - time.calendar_.getTime().getTime(); return millisBetween / (1000 * 60 * 60); } public String toString() { StringBuffer string = new StringBuffer(); string.append (super.toString()); string.append (' '); if (getHours() < 10) string.append ('0'); string.append (getHours()); string.append (':'); if (getMinutes() < 10) string.append ('0'); string.append (getMinutes()); string.append (':'); if (getSeconds() < 10) string.append ('0'); string.append (getSeconds()); string.append (','); string.append (getMilliSeconds()); return string.toString(); } public static void main (String args[]) { Time time = new Time (12,00,00); System.out.println (time); } }