001 /* 002 * Zmanim Java API 003 * Copyright (C) 2004-2007 Eliyahu Hershfeld 004 * 005 * This program is free software; you can redistribute it and/or modify it under the terms of the 006 * GNU General Public License as published by the Free Software Foundation; either version 2 of the 007 * License, or (at your option) any later version. 008 * 009 * This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without 010 * even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 011 * General Public License for more details. 012 * 013 * You should have received a copy of the GNU General Public License along with this program; if 014 * not, write to the Free Software Foundation, Inc. 59 Temple Place - Suite 330, Boston, MA 015 * 02111-1307, USA or connect to: http://www.fsf.org/copyleft/gpl.html 016 */ 017 package net.sourceforge.zmanim.util; 018 019 /** 020 * A class that represents a numeric time. Times that represent a time of day 021 * are stored as {@link java.util.Date}s in this API. The time class is used to 022 * represent numeric time such as the time in hours, minutes, seconds and 023 * milliseconds of a 024 * {@link net.sourceforge.zmanim.AstronomicalCalendar#getTemporalHour() temporal hour}. 025 * 026 * @author © Eliyahu Hershfeld 2004 - 2007 027 * @version 0.9.0 028 */ 029 public class Time { 030 private static final int SECOND_MILLIS = 1000; 031 032 private static final int MINUTE_MILLIS = SECOND_MILLIS * 60; 033 034 private static final int HOUR_MILLIS = MINUTE_MILLIS * 60; 035 036 private int hours = 0; 037 038 private int minutes = 0; 039 040 private int seconds = 0; 041 042 private int milliseconds = 0; 043 044 private boolean isNegative = false; 045 046 public Time(int hours, int minutes, int seconds, int milliseconds) { 047 this.hours = hours; 048 this.minutes = minutes; 049 this.seconds = seconds; 050 this.milliseconds = milliseconds; 051 } 052 053 public Time(double millis) { 054 this((int) millis); 055 } 056 057 public Time(int millis) { 058 if(millis < 0){ 059 isNegative = true; 060 millis = Math.abs(millis); 061 } 062 hours = millis / HOUR_MILLIS; 063 millis = millis - hours * HOUR_MILLIS; 064 065 minutes = millis / MINUTE_MILLIS; 066 millis = millis - minutes * MINUTE_MILLIS; 067 068 seconds = millis / SECOND_MILLIS; 069 millis = millis - seconds * SECOND_MILLIS; 070 071 milliseconds = millis; 072 } 073 074 public boolean isNegative(){ 075 return isNegative; 076 } 077 public void setIsNegative(boolean isNegative){ 078 this.isNegative = isNegative; 079 } 080 081 /** 082 * @return Returns the hour. 083 */ 084 public int getHours() { 085 return hours; 086 } 087 088 /** 089 * @param hours 090 * The hours to set. 091 */ 092 public void setHours(int hours) { 093 this.hours = hours; 094 } 095 096 /** 097 * @return Returns the minutes. 098 */ 099 public int getMinutes() { 100 return minutes; 101 } 102 103 /** 104 * @param minutes 105 * The minutes to set. 106 */ 107 public void setMinutes(int minutes) { 108 this.minutes = minutes; 109 } 110 111 /** 112 * @return Returns the seconds. 113 */ 114 public int getSeconds() { 115 return seconds; 116 } 117 118 /** 119 * @param seconds 120 * The seconds to set. 121 */ 122 public void setSeconds(int seconds) { 123 this.seconds = seconds; 124 } 125 126 /** 127 * @return Returns the milliseconds. 128 */ 129 public int getMilliseconds() { 130 return milliseconds; 131 } 132 133 /** 134 * @param milliseconds 135 * The milliseconds to set. 136 */ 137 public void setMilliseconds(int milliseconds) { 138 this.milliseconds = milliseconds; 139 } 140 141 public double getTime() { 142 return hours * HOUR_MILLIS + minutes * MINUTE_MILLIS + seconds 143 * SECOND_MILLIS + milliseconds; 144 } 145 146 public String toString() { 147 return new ZmanimFormatter().format(this); 148 } 149 }