Class DateTime
- java.lang.Object
-
- com.google.api.client.util.DateTime
-
- All Implemented Interfaces:
java.io.Serializable
public final class DateTime extends java.lang.Object implements java.io.SerializableImmutable representation of a date with an optional time and an optional time zone based on RFC 3339.Implementation is immutable and therefore thread-safe.
- Since:
- 1.0
- See Also:
- Serialized Form
-
-
Field Summary
Fields Modifier and Type Field Description private booleandateOnlySpecifies whether this is a date-only value.private static java.util.TimeZoneGMTprivate static java.util.regex.PatternRFC3339_PATTERNRegular expression for parsing RFC3339 date/times.private static longserialVersionUIDprivate inttzShiftTime zone shift from UTC in minutes or0for date-only value.private longvalueDate/time value expressed as the number of ms since the Unix epoch.
-
Constructor Summary
Constructors Constructor Description DateTime(boolean dateOnly, long value, java.lang.Integer tzShift)InstantiatesDateTime, which may represent a date-only value, from the number of milliseconds since the Unix epoch, and a shift from UTC in minutes.DateTime(long value)InstantiatesDateTimefrom the number of milliseconds since the Unix epoch.DateTime(long value, int tzShift)InstantiatesDateTimefrom the number of milliseconds since the Unix epoch, and a shift from UTC in minutes.DateTime(java.lang.String value)DateTime(java.util.Date value)InstantiatesDateTimefrom aDate.DateTime(java.util.Date date, java.util.TimeZone zone)
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description private static voidappendInt(java.lang.StringBuilder sb, int num, int numDigits)Appends a zero-padded number to a string builder.booleanequals(java.lang.Object o)intgetTimeZoneShift()Returns the time zone shift from UTC in minutes or0for date-only value.longgetValue()Returns the date/time value expressed as the number of milliseconds since the Unix epoch.inthashCode()booleanisDateOnly()Returns whether this is a date-only value.static DateTimeparseRfc3339(java.lang.String str)Parses an RFC3339 date/time value.java.lang.StringtoString()java.lang.StringtoStringRfc3339()Formats the value as an RFC 3339 date/time string.
-
-
-
Field Detail
-
serialVersionUID
private static final long serialVersionUID
- See Also:
- Constant Field Values
-
GMT
private static final java.util.TimeZone GMT
-
RFC3339_PATTERN
private static final java.util.regex.Pattern RFC3339_PATTERN
Regular expression for parsing RFC3339 date/times.
-
value
private final long value
Date/time value expressed as the number of ms since the Unix epoch.If the time zone is specified, this value is normalized to UTC, so to format this date/time value, the time zone shift has to be applied.
-
dateOnly
private final boolean dateOnly
Specifies whether this is a date-only value.
-
tzShift
private final int tzShift
Time zone shift from UTC in minutes or0for date-only value.
-
-
Constructor Detail
-
DateTime
public DateTime(java.util.Date date, java.util.TimeZone zone)- Parameters:
date- date and timezone- time zone; ifnull, it is interpreted asTimeZone.getDefault().
-
DateTime
public DateTime(long value)
InstantiatesDateTimefrom the number of milliseconds since the Unix epoch.The time zone is interpreted as
TimeZone.getDefault(), which may vary with implementation.- Parameters:
value- number of milliseconds since the Unix epoch (January 1, 1970, 00:00:00 GMT)
-
DateTime
public DateTime(java.util.Date value)
InstantiatesDateTimefrom aDate.The time zone is interpreted as
TimeZone.getDefault(), which may vary with implementation.- Parameters:
value- date and time
-
DateTime
public DateTime(long value, int tzShift)InstantiatesDateTimefrom the number of milliseconds since the Unix epoch, and a shift from UTC in minutes.- Parameters:
value- number of milliseconds since the Unix epoch (January 1, 1970, 00:00:00 GMT)tzShift- time zone, represented by the number of minutes off of UTC.
-
DateTime
public DateTime(boolean dateOnly, long value, java.lang.Integer tzShift)InstantiatesDateTime, which may represent a date-only value, from the number of milliseconds since the Unix epoch, and a shift from UTC in minutes.- Parameters:
dateOnly- specifies if this should represent a date-only valuevalue- number of milliseconds since the Unix epoch (January 1, 1970, 00:00:00 GMT)tzShift- time zone, represented by the number of minutes off of UTC, ornullforTimeZone.getDefault().
-
DateTime
public DateTime(java.lang.String value)
InstantiatesDateTimefrom an RFC 3339 date/time value.Upgrade warning: in prior version 1.17, this method required milliseconds to be exactly 3 digits (if included), and did not throw an exception for all types of invalid input values, but starting in version 1.18, the parsing done by this method has become more strict to enforce that only valid RFC3339 strings are entered, and if not, it throws a
NumberFormatException. Also, in accordance with the RFC3339 standard, any number of milliseconds digits is now allowed.- Parameters:
value- an RFC 3339 date/time value.- Since:
- 1.11
-
-
Method Detail
-
getValue
public long getValue()
Returns the date/time value expressed as the number of milliseconds since the Unix epoch.If the time zone is specified, this value is normalized to UTC, so to format this date/time value, the time zone shift has to be applied.
- Since:
- 1.5
-
isDateOnly
public boolean isDateOnly()
Returns whether this is a date-only value.- Since:
- 1.5
-
getTimeZoneShift
public int getTimeZoneShift()
Returns the time zone shift from UTC in minutes or0for date-only value.- Since:
- 1.5
-
toStringRfc3339
public java.lang.String toStringRfc3339()
Formats the value as an RFC 3339 date/time string.
-
toString
public java.lang.String toString()
- Overrides:
toStringin classjava.lang.Object
-
equals
public boolean equals(java.lang.Object o)
A check is added that the time zone is the same. If you ONLY want to check equality of time value, check equality on the
getValue().- Overrides:
equalsin classjava.lang.Object
-
hashCode
public int hashCode()
- Overrides:
hashCodein classjava.lang.Object
-
parseRfc3339
public static DateTime parseRfc3339(java.lang.String str) throws java.lang.NumberFormatException
Parses an RFC3339 date/time value.Upgrade warning: in prior version 1.17, this method required milliseconds to be exactly 3 digits (if included), and did not throw an exception for all types of invalid input values, but starting in version 1.18, the parsing done by this method has become more strict to enforce that only valid RFC3339 strings are entered, and if not, it throws a
NumberFormatException. Also, in accordance with the RFC3339 standard, any number of milliseconds digits is now allowed.For the date-only case, the time zone is ignored and the hourOfDay, minute, second, and millisecond parameters are set to zero.
- Parameters:
str- Date/time string in RFC3339 format- Throws:
java.lang.NumberFormatException- ifstrdoesn't match the RFC3339 standard format; an exception is thrown ifstrdoesn't matchRFC3339_REGEXor if it contains a time zone shift but no time.
-
appendInt
private static void appendInt(java.lang.StringBuilder sb, int num, int numDigits)Appends a zero-padded number to a string builder.
-
-