blob: d08329050d7fb6a78e70a9a78169244e90ee89c3 [file] [log] [blame]
/*
* reserved comment block
* DO NOT REMOVE OR ALTER!
*/
/*
* Copyright 2004,2005 The Apache Software Foundation.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.sun.org.apache.xerces.internal.xs.datatypes;
import javax.xml.datatype.Duration;
import javax.xml.datatype.XMLGregorianCalendar;
/**
* <p>Interface to expose the values for all date-time related types. The following
* table shows the methods defined for various XML Schema 1.0 built-in types. 'X'
* marks whether a particular method is defined for a particular type. Accessing undefined
* methods may return unexpected values.
*
* <table border="1">
* <br/>
* <tr>
* <td> XML Schema Datatype </td>
* <td> getYears() </td>
* <td> getMonths() </td>
* <td> getDays() </td>
* <td> getHours() </td>
* <td> getMinutes() </td>
* <td> getSeconds() </td>
* <td> getTimeZoneHours() </td>
* <td> getTimeZoneMinutes() </td>
* <td> getXMLGregorianCalendar() </td>
* <td> getDuration() </td>
* <td> hasTimeZone() </td>
* <td> normalize() </td>
* <td> isNormalized() </td>
* <td> getLexicalValue() </td>
* </tr>
* <tr>
* <td> gYear </td>
* <td>X</td>
* <td>-</td>
* <td>-</td>
* <td>-</td>
* <td>-</td>
* <td>-</td>
* <td>X</td>
* <td>X</td>
* <td>X</td>
* <td>-</td>
* <td>X</td>
* <td>X</td>
* <td>X</td>
* <td>X</td>
* </tr>
* <tr>
* <td> gMonth </td>
* <td>-</td>
* <td>X</td>
* <td>-</td>
* <td>-</td>
* <td>-</td>
* <td>-</td>
* <td>X</td>
* <td>X</td>
* <td>X</td>
* <td>-</td>
* <td>X</td>
* <td>X</td>
* <td>X</td>
* <td>X</td>
* </tr>
* <tr>
* <td> gDay </td>
* <td>-</td>
* <td>-</td>
* <td>X</td>
* <td>-</td>
* <td>-</td>
* <td>-</td>
* <td>X</td>
* <td>X</td>
* <td>X</td>
* <td>-</td>
* <td>X</td>
* <td>X</td>
* <td>X</td>
* <td>X</td>
* </tr>
* <tr>
* <td> gYearMonth </td>
* <td>X</td>
* <td>X</td>
* <td>-</td>
* <td>-</td>
* <td>-</td>
* <td>-</td>
* <td>X</td>
* <td>X</td>
* <td>X</td>
* <td>-</td>
* <td>X</td>
* <td>X</td>
* <td>X</td>
* <td>X</td>
* </tr>
* <tr>
* <td> gMonthDay </td>
* <td>-</td>
* <td>X</td>
* <td>X</td>
* <td>-</td>
* <td>-</td>
* <td>-</td>
* <td>X</td>
* <td>X</td>
* <td>X</td>
* <td>-</td>
* <td>X</td>
* <td>X</td>
* <td>X</td>
* <td>X</td>
* </tr>
* <tr>
* <td> date </td>
* <td>X</td>
* <td>X</td>
* <td>X</td>
* <td>-</td>
* <td>-</td>
* <td>-</td>
* <td>X</td>
* <td>X</td>
* <td>X</td>
* <td>-</td>
* <td>X</td>
* <td>X</td>
* <td>X</td>
* <td>X</td>
* </tr>
* <tr>
* <td> time </td>
* <td>-</td>
* <td>-</td>
* <td>-</td>
* <td>X</td>
* <td>X</td>
* <td>X</td>
* <td>X</td>
* <td>X</td>
* <td>X</td>
* <td>-</td>
* <td>X</td>
* <td>X</td>
* <td>X</td>
* <td>X</td>
* </tr>
* <tr>
* <td> datetime </td>
* <td>X</td>
* <td>X</td>
* <td>X</td>
* <td>X</td>
* <td>X</td>
* <td>X</td>
* <td>X</td>
* <td>X</td>
* <td>X</td>
* <td>-</td>
* <td>X</td>
* <td>X</td>
* <td>X</td>
* <td>X</td>
* </tr>
* <tr>
* <td> duration </td>
* <td>-</td>
* <td>X</td>
* <td>-</td>
* <td>-</td>
* <td>-</td>
* <td>X</td>
* <td>-</td>
* <td>-</td>
* <td>-</td>
* <td>X</td>
* <td>-</td>
* <td>-</td>
* <td>-</td>
* <td>X</td>
* </tr>
* </table>
* </p>
*
* @author Ankit Pasricha, IBM
*
*/
public interface XSDateTime {
/**
* @return years - can be negative for date-time related types;
*
*/
public int getYears();
/**
* @return months - can be negative only for duration types;
* For duration types, it returns years*12 + months
*/
public int getMonths();
/**
* @return days - cannot be negative;
*
*/
public int getDays();
/**
* @return hours - cannot be negative;
*
*/
public int getHours();
/**
* @return minutes - cannot be negative;
*
*/
public int getMinutes();
/**
* @return seconds - can be negative only for durations;
* For duration types, it returns days*24*3600 + hours*3600
* + minutes*60 + seconds
*/
public double getSeconds();
/**
* @return boolean (true when timezone is specified in the original lexical value)
*
*/
public boolean hasTimeZone();
/**
* @return timezone hours (for GMT-xx:xx this will be negative),
*
*/
public int getTimeZoneHours();
/**
* @return timezone minutes (for GMT-xx:xx this will be negative),
*
*/
public int getTimeZoneMinutes();
/**
* @return the original lexical value
*/
public String getLexicalValue();
/**
* @return a new date-time related object with normalized values
* (has no effect on objects already
* normalized)
*/
public XSDateTime normalize();
/**
* @return whether a date-time related object is normalized or not
* (value is not useful for types where timezone is not specified)
*/
public boolean isNormalized();
/**
* @return an un-normalized XMLGregorianCalendar (if applicable otherwise null)
*/
public XMLGregorianCalendar getXMLGregorianCalendar();
/**
* @return a Duration (if applicable otherwise null)
*/
public Duration getDuration();
}