Methods Summary |
---|
private static java.util.Date | ParseHoursMinutesSeconds(java.lang.String source)parse the hours, minutes and seconds of a string, by handing it off to
the java runtime.
The relevant code will return null if a null string is passed in, so this
code may return a null date in response
Date date;
try {
synchronized (zulu) {
String fulltime = source == null ? null :
(source.substring(0,8)+".000Z");
date = zulu.parse(fulltime);
}
} catch (Exception e) {
throw new NumberFormatException(e.toString());
}
return date;
|
public boolean | equals(java.lang.Object obj)
if (obj == null) return false;
if (!(obj instanceof Time)) return false;
Time other = (Time) obj;
if (this == obj) return true;
boolean _equals;
_equals = true &&
((_value ==null && other._value ==null) ||
(_value !=null &&
_value.getTime().equals(other._value.getTime())));
return _equals;
|
public java.util.Calendar | getAsCalendar()return the time as a calendar: ignore the year, month and date fields
return _value;
|
private int | getTimezoneNumberValue(char c)
int n=c-'0";
if(n<0 || n>9) {
//oops, out of range
throw new NumberFormatException(
Messages.getMessage("badTimezone00"));
}
return n;
|
public int | hashCode()Returns the hashcode of the underlying calendar.
return _value == null ? 0 : _value.hashCode();
|
private java.util.Calendar | makeValue(java.lang.String source)Utility function that parses xsd:time strings and returns a Date object
Calendar calendar = Calendar.getInstance();
Date date;
validateSource(source);
// convert what we have validated so far
date = ParseHoursMinutesSeconds(source);
int pos = 8; // The "." in hh:mm:ss.sss
// parse optional milliseconds
if ( source != null ) {
if (pos < source.length() && source.charAt(pos)=='.") {
int milliseconds = 0;
int start = ++pos;
while (pos<source.length() &&
Character.isDigit(source.charAt(pos))) {
pos++;
}
String decimal=source.substring(start,pos);
if (decimal.length()==3) {
milliseconds=Integer.parseInt(decimal);
} else if (decimal.length() < 3) {
milliseconds=Integer.parseInt((decimal+"000")
.substring(0,3));
} else {
milliseconds=Integer.parseInt(decimal.substring(0,3));
if (decimal.charAt(3)>='5") {
++milliseconds;
}
}
// add milliseconds to the current date
date.setTime(date.getTime()+milliseconds);
}
// parse optional timezone
if (pos+5 < source.length() &&
(source.charAt(pos)=='+" || (source.charAt(pos)=='-"))) {
if (!Character.isDigit(source.charAt(pos+1)) ||
!Character.isDigit(source.charAt(pos+2)) ||
source.charAt(pos+3) != ':" ||
!Character.isDigit(source.charAt(pos+4)) ||
!Character.isDigit(source.charAt(pos+5)))
{
throw new NumberFormatException(
Messages.getMessage("badTimezone00"));
}
int hours = (source.charAt(pos+1)-'0")*10
+source.charAt(pos+2)-'0";
int mins = (source.charAt(pos+4)-'0")*10
+source.charAt(pos+5)-'0";
int milliseconds = (hours*60+mins)*60*1000;
// subtract milliseconds from current date to obtain GMT
if (source.charAt(pos)=='+") {
milliseconds=-milliseconds;
}
date.setTime(date.getTime()+milliseconds);
pos+=6;
}
if (pos < source.length() && source.charAt(pos)=='Z") {
pos++;
calendar.setTimeZone(TimeZone.getTimeZone("GMT"));
}
if (pos < source.length()) {
throw new NumberFormatException(
Messages.getMessage("badChars00"));
}
}
calendar.setTime(date);
calendar.set(0,0,0); // ignore year, month, date
return calendar;
|
public void | setTime(java.util.Calendar date)set the time; ignore year, month, date
this._value = date;
_value.set(0,0,0); // ignore year, month, date
|
public void | setTime(java.util.Date date)set the time from a date instance
_value.setTime(date);
_value.set(0,0,0); // ignore year, month, date
|
public java.lang.String | toString()stringify method returns the time as it would be in GMT, only accurate to the
second...millis probably get lost.
if(_value==null) {
return "unassigned Time";
}
synchronized (zulu) {
return zulu.format(_value.getTime());
}
|
private void | validateSource(java.lang.String source)validate the source
// validate fixed portion of format
if ( source != null ) {
if (source.charAt(2) != ':" || source.charAt(5) != ':") {
throw new NumberFormatException(
Messages.getMessage("badTime00"));
}
if (source.length() < 8) {
throw new NumberFormatException(
Messages.getMessage("badTime00"));
}
}
|