public class GeneralizedTime extends java.lang.Object implements java.lang.Comparable<GeneralizedTime>
This class represents the generalized time syntax as defined in RFC 4517 section 3.3.13.
The date, time and time zone information is internally backed
by an Calendar object
Leap seconds are not supported, as Calendar
does not support leap seconds.
3.3.13. Generalized Time
A value of the Generalized Time syntax is a character string
representing a date and time. The LDAP-specific encoding of a value
of this syntax is a restriction of the format defined in [ISO8601],
and is described by the following ABNF:
GeneralizedTime = century year month day hour
[ minute [ second / leap-second ] ]
[ fraction ]
g-time-zone
century = 2(%x30-39) ; "00" to "99"
year = 2(%x30-39) ; "00" to "99"
month = ( %x30 %x31-39 ) ; "01" (January) to "09"
/ ( %x31 %x30-32 ) ; "10" to "12"
day = ( %x30 %x31-39 ) ; "01" to "09"
/ ( %x31-32 %x30-39 ) ; "10" to "29"
/ ( %x33 %x30-31 ) ; "30" to "31"
hour = ( %x30-31 %x30-39 ) / ( %x32 %x30-33 ) ; "00" to "23"
minute = %x30-35 %x30-39 ; "00" to "59"
second = ( %x30-35 %x30-39 ) ; "00" to "59"
leap-second = ( %x36 %x30 ) ; "60"
fraction = ( DOT / COMMA ) 1*(%x30-39)
g-time-zone = %x5A ; "Z"
/ g-differential
g-differential = ( MINUS / PLUS ) hour [ minute ]
MINUS = %x2D ; minus sign ("-")
The , , and rules are defined in [RFC4512].
The above ABNF allows character strings that do not represent valid
dates (in the Gregorian calendar) and/or valid times (e.g., February
31, 1994). Such character strings SHOULD be considered invalid for
this syntax.
The time value represents coordinated universal time (equivalent to
Greenwich Mean Time) if the "Z" form of is used;
otherwise, the value represents a local time in the time zone
indicated by . In the latter case, coordinated
universal time can be calculated by subtracting the differential from
the local time. The "Z" form of SHOULD be used in
preference to .
If is omitted, then represents a fraction of an
hour; otherwise, if and are omitted, then
represents a fraction of a minute; otherwise,
represents a fraction of a second.
Examples:
199412161032Z
199412160532-0500
Both example values represent the same coordinated universal time:
10:32 AM, December 16, 1994.
The LDAP definition for the Generalized Time syntax is:
( 1.3.6.1.4.1.1466.115.121.1.24 DESC 'Generalized Time' )
This syntax corresponds to the GeneralizedTime ASN.1 type from
[ASN.1], with the constraint that local time without a differential
SHALL NOT be used.
| Modifier and Type | Class and Description |
|---|---|
static class |
GeneralizedTime.Format
The format of the generalized time.
|
static class |
GeneralizedTime.FractionDelimiter
The fraction delimiter of the generalized time.
|
static class |
GeneralizedTime.TimeZoneFormat
The time zone format of the generalized time.
|
| Modifier and Type | Field and Description |
|---|---|
private java.util.Calendar |
calendar
The calendar
|
private GeneralizedTime.Format |
upFormat
The user provided format
|
private GeneralizedTime.FractionDelimiter |
upFractionDelimiter
The user provided fraction delimiter
|
private int |
upFractionLength
the user provided fraction length
|
private java.lang.String |
upGeneralizedTime
The user provided value
|
private GeneralizedTime.TimeZoneFormat |
upTimeZoneFormat
The user provided time zone format
|
| Constructor and Description |
|---|
GeneralizedTime(java.util.Calendar calendar)
Creates a new instance of GeneralizedTime, based on the given Calendar object.
|
GeneralizedTime(java.util.Date date)
Creates a new instance of GeneralizedTime by setting the date to an instance of Calendar.
|
GeneralizedTime(java.lang.String generalizedTime)
Creates a new instance of GeneralizedTime, based on the
given generalized time string.
|
| Modifier and Type | Method and Description |
|---|---|
int |
compareTo(GeneralizedTime other)
Compares this GeneralizedTime object with the specified GeneralizedTime object.
|
boolean |
equals(java.lang.Object obj) |
private java.lang.String |
getAllDigits(int startIndex) |
java.util.Calendar |
getCalendar()
Gets the calendar.
|
java.util.Date |
getDate() |
static java.util.Date |
getDate(java.lang.String zuluTime) |
int |
getDay() |
private GeneralizedTime.Format |
getFormatWithoutFraction(GeneralizedTime.Format f)
Gets the corresponding format with fraction.
|
int |
getFraction() |
private java.lang.String |
getFraction(int startIndex) |
int |
getHour() |
int |
getMinutes() |
int |
getMonth() |
int |
getSeconds() |
long |
getTime() |
int |
getYear() |
int |
hashCode() |
private void |
parseDay() |
private void |
parseFractionDelmiter(int fractionDelimiterPos) |
private void |
parseFractionOfHour() |
private void |
parseFractionOfMinute() |
private void |
parseFractionOfSecond() |
private void |
parseHour() |
private void |
parseMinute() |
private void |
parseMonth() |
private void |
parseSecond() |
private void |
parseTimezone(int pos) |
private void |
parseYear() |
private void |
setUp(java.util.Calendar newCalendar) |
java.lang.String |
toGeneralizedTime()
Returns the string representation of this generalized time.
|
java.lang.String |
toGeneralizedTime(GeneralizedTime.Format format,
GeneralizedTime.FractionDelimiter fractionDelimiter,
int fractionLength,
GeneralizedTime.TimeZoneFormat timeZoneFormat)
Returns the string representation of this generalized time.
|
java.lang.String |
toGeneralizedTimeWithoutFraction()
Returns the string representation of this generalized time.
|
java.lang.String |
toString() |
private java.lang.String upGeneralizedTime
private GeneralizedTime.Format upFormat
private GeneralizedTime.TimeZoneFormat upTimeZoneFormat
private GeneralizedTime.FractionDelimiter upFractionDelimiter
private int upFractionLength
private java.util.Calendar calendar
public GeneralizedTime(java.util.Date date)
date - the dateGeneralizedTime(Calendar)public GeneralizedTime(java.util.Calendar calendar)
Format.YEAR_MONTH_DAY_HOUR_MIN_SECas default format and
TimeZoneFormat.Zas default time zone format.
calendar - the calendar containing the date, time and timezone informationpublic GeneralizedTime(java.lang.String generalizedTime)
throws java.text.ParseException
generalizedTime - the generalized timejava.text.ParseException - if the given generalized time can't be parsed.private void setUp(java.util.Calendar newCalendar)
private void parseTimezone(int pos)
throws java.text.ParseException
java.text.ParseExceptionprivate void parseFractionOfSecond()
throws java.text.ParseException
java.text.ParseExceptionprivate void parseFractionOfMinute()
throws java.text.ParseException
java.text.ParseExceptionprivate void parseFractionOfHour()
throws java.text.ParseException
java.text.ParseExceptionprivate void parseFractionDelmiter(int fractionDelimiterPos)
private java.lang.String getFraction(int startIndex)
throws java.text.ParseException
java.text.ParseExceptionprivate java.lang.String getAllDigits(int startIndex)
private void parseSecond()
throws java.text.ParseException
java.text.ParseExceptionprivate void parseMinute()
throws java.text.ParseException
java.text.ParseExceptionprivate void parseHour()
throws java.text.ParseException
java.text.ParseExceptionprivate void parseDay()
throws java.text.ParseException
java.text.ParseExceptionprivate void parseMonth()
throws java.text.ParseException
java.text.ParseExceptionprivate void parseYear()
throws java.text.ParseException
java.text.ParseExceptionpublic java.lang.String toGeneralizedTime()
public java.lang.String toGeneralizedTimeWithoutFraction()
private GeneralizedTime.Format getFormatWithoutFraction(GeneralizedTime.Format f)
f - the formatpublic java.lang.String toGeneralizedTime(GeneralizedTime.Format format, GeneralizedTime.FractionDelimiter fractionDelimiter, int fractionLength, GeneralizedTime.TimeZoneFormat timeZoneFormat)
format - the target formatfractionDelimiter - the target fraction delimiter, may be nullfractionLength - the fraction lengthtimeZoneFormat - the target time zone formatpublic java.util.Calendar getCalendar()
GeneralizedTime settings.public java.lang.String toString()
toString in class java.lang.Objectpublic int hashCode()
hashCode in class java.lang.Objectpublic boolean equals(java.lang.Object obj)
equals in class java.lang.Objectpublic int compareTo(GeneralizedTime other)
compareTo in interface java.lang.Comparable<GeneralizedTime>other - the other GeneralizedTime objectComparable.compareTo(java.lang.Object)public long getTime()
public java.util.Date getDate()
public int getYear()
public int getMonth()
public int getDay()
public int getHour()
public int getMinutes()
public int getSeconds()
public int getFraction()
public static java.util.Date getDate(java.lang.String zuluTime)
throws java.text.ParseException
zuluTime - java.text.ParseException