public synchronized String toString() {
   if (canonical == null) {
     canonical = type.dateToString(this);
   }
   return canonical;
 }
 /* (non-Javadoc)
  * @see org.apache.xerces.xs.datatypes.XSDateTime#getDuration()
  */
 public Duration getDuration() {
   return type.getDuration(this);
 }
 public boolean equals(Object obj) {
   if (!(obj instanceof DateTimeData)) return false;
   return type.compareDates(this, (DateTimeData) obj, true) == 0;
 }
 /* (non-Javadoc)
  * @see org.apache.xerces.xs.datatypes.XSDateTime#getXMLGregorianCalendar()
  */
 public XMLGregorianCalendar getXMLGregorianCalendar() {
   return type.getXMLGregorianCalendar(this);
 }