blob: 4ccc378e524784b4d9a3f4bace52d6275cacc270 [file] [log] [blame]
J. Duke319a3b92007-12-01 00:00:00 +00001/*
2 * Copyright 1996-2004 Sun Microsystems, Inc. All Rights Reserved.
3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4 *
5 * This code is free software; you can redistribute it and/or modify it
6 * under the terms of the GNU General Public License version 2 only, as
7 * published by the Free Software Foundation. Sun designates this
8 * particular file as subject to the "Classpath" exception as provided
9 * by Sun in the LICENSE file that accompanied this code.
10 *
11 * This code is distributed in the hope that it will be useful, but WITHOUT
12 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
13 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
14 * version 2 for more details (a copy is included in the LICENSE file that
15 * accompanied this code).
16 *
17 * You should have received a copy of the GNU General Public License version
18 * 2 along with this work; if not, write to the Free Software Foundation,
19 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
20 *
21 * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
22 * CA 95054 USA or visit www.sun.com if you need additional information or
23 * have any questions.
24 */
25
26package java.sql;
27
28/**
29 * <P>A thin wrapper around the <code>java.util.Date</code> class that allows the JDBC
30 * API to identify this as an SQL <code>TIME</code> value. The <code>Time</code>
31 * class adds formatting and
32 * parsing operations to support the JDBC escape syntax for time
33 * values.
34 * <p>The date components should be set to the "zero epoch"
35 * value of January 1, 1970 and should not be accessed.
36 */
37public class Time extends java.util.Date {
38
39 /**
40 * Constructs a <code>Time</code> object initialized with the
41 * given values for the hour, minute, and second.
42 * The driver sets the date components to January 1, 1970.
43 * Any method that attempts to access the date components of a
44 * <code>Time</code> object will throw a
45 * <code>java.lang.IllegalArgumentException</code>.
46 * <P>
47 * The result is undefined if a given argument is out of bounds.
48 *
49 * @param hour 0 to 23
50 * @param minute 0 to 59
51 * @param second 0 to 59
52 *
53 * @deprecated Use the constructor that takes a milliseconds value
54 * in place of this constructor
55 */
56 @Deprecated
57 public Time(int hour, int minute, int second) {
58 super(70, 0, 1, hour, minute, second);
59 }
60
61 /**
62 * Constructs a <code>Time</code> object using a milliseconds time value.
63 *
64 * @param time milliseconds since January 1, 1970, 00:00:00 GMT;
65 * a negative number is milliseconds before
66 * January 1, 1970, 00:00:00 GMT
67 */
68 public Time(long time) {
69 super(time);
70 }
71
72 /**
73 * Sets a <code>Time</code> object using a milliseconds time value.
74 *
75 * @param time milliseconds since January 1, 1970, 00:00:00 GMT;
76 * a negative number is milliseconds before
77 * January 1, 1970, 00:00:00 GMT
78 */
79 public void setTime(long time) {
80 super.setTime(time);
81 }
82
83 /**
84 * Converts a string in JDBC time escape format to a <code>Time</code> value.
85 *
86 * @param s time in format "hh:mm:ss"
87 * @return a corresponding <code>Time</code> object
88 */
89 public static Time valueOf(String s) {
90 int hour;
91 int minute;
92 int second;
93 int firstColon;
94 int secondColon;
95
96 if (s == null) throw new java.lang.IllegalArgumentException();
97
98 firstColon = s.indexOf(':');
99 secondColon = s.indexOf(':', firstColon+1);
100 if ((firstColon > 0) & (secondColon > 0) &
101 (secondColon < s.length()-1)) {
102 hour = Integer.parseInt(s.substring(0, firstColon));
103 minute =
104 Integer.parseInt(s.substring(firstColon+1, secondColon));
105 second = Integer.parseInt(s.substring(secondColon+1));
106 } else {
107 throw new java.lang.IllegalArgumentException();
108 }
109
110 return new Time(hour, minute, second);
111 }
112
113 /**
114 * Formats a time in JDBC time escape format.
115 *
116 * @return a <code>String</code> in hh:mm:ss format
117 */
118 public String toString () {
119 int hour = super.getHours();
120 int minute = super.getMinutes();
121 int second = super.getSeconds();
122 String hourString;
123 String minuteString;
124 String secondString;
125
126 if (hour < 10) {
127 hourString = "0" + hour;
128 } else {
129 hourString = Integer.toString(hour);
130 }
131 if (minute < 10) {
132 minuteString = "0" + minute;
133 } else {
134 minuteString = Integer.toString(minute);
135 }
136 if (second < 10) {
137 secondString = "0" + second;
138 } else {
139 secondString = Integer.toString(second);
140 }
141 return (hourString + ":" + minuteString + ":" + secondString);
142 }
143
144 // Override all the date operations inherited from java.util.Date;
145
146 /**
147 * This method is deprecated and should not be used because SQL <code>TIME</code>
148 * values do not have a year component.
149 *
150 * @deprecated
151 * @exception java.lang.IllegalArgumentException if this
152 * method is invoked
153 * @see #setYear
154 */
155 @Deprecated
156 public int getYear() {
157 throw new java.lang.IllegalArgumentException();
158 }
159
160 /**
161 * This method is deprecated and should not be used because SQL <code>TIME</code>
162 * values do not have a month component.
163 *
164 * @deprecated
165 * @exception java.lang.IllegalArgumentException if this
166 * method is invoked
167 * @see #setMonth
168 */
169 @Deprecated
170 public int getMonth() {
171 throw new java.lang.IllegalArgumentException();
172 }
173
174 /**
175 * This method is deprecated and should not be used because SQL <code>TIME</code>
176 * values do not have a day component.
177 *
178 * @deprecated
179 * @exception java.lang.IllegalArgumentException if this
180 * method is invoked
181 */
182 @Deprecated
183 public int getDay() {
184 throw new java.lang.IllegalArgumentException();
185 }
186
187 /**
188 * This method is deprecated and should not be used because SQL <code>TIME</code>
189 * values do not have a date component.
190 *
191 * @deprecated
192 * @exception java.lang.IllegalArgumentException if this
193 * method is invoked
194 * @see #setDate
195 */
196 @Deprecated
197 public int getDate() {
198 throw new java.lang.IllegalArgumentException();
199 }
200
201 /**
202 * This method is deprecated and should not be used because SQL <code>TIME</code>
203 * values do not have a year component.
204 *
205 * @deprecated
206 * @exception java.lang.IllegalArgumentException if this
207 * method is invoked
208 * @see #getYear
209 */
210 @Deprecated
211 public void setYear(int i) {
212 throw new java.lang.IllegalArgumentException();
213 }
214
215 /**
216 * This method is deprecated and should not be used because SQL <code>TIME</code>
217 * values do not have a month component.
218 *
219 * @deprecated
220 * @exception java.lang.IllegalArgumentException if this
221 * method is invoked
222 * @see #getMonth
223 */
224 @Deprecated
225 public void setMonth(int i) {
226 throw new java.lang.IllegalArgumentException();
227 }
228
229 /**
230 * This method is deprecated and should not be used because SQL <code>TIME</code>
231 * values do not have a date component.
232 *
233 * @deprecated
234 * @exception java.lang.IllegalArgumentException if this
235 * method is invoked
236 * @see #getDate
237 */
238 @Deprecated
239 public void setDate(int i) {
240 throw new java.lang.IllegalArgumentException();
241 }
242
243 /**
244 * Private serial version unique ID to ensure serialization
245 * compatibility.
246 */
247 static final long serialVersionUID = 8397324403548013681L;
248}