Class TimeValueImpl
TimeValue.- Author:
- Fredo Erxleben, Markus Kroetzsch, Antonin Delpeuch
-
Field Summary
Fields inherited from class org.wikidata.wdtk.datamodel.implementation.ValueImpl
JSON_VALUE_TYPE_ENTITY_ID, JSON_VALUE_TYPE_GLOBE_COORDINATES, JSON_VALUE_TYPE_MONOLINGUAL_TEXT, JSON_VALUE_TYPE_QUANTITY, JSON_VALUE_TYPE_STRING, JSON_VALUE_TYPE_TIMEFields inherited from interface org.wikidata.wdtk.datamodel.interfaces.TimeValue
CM_GREGORIAN_PRO, CM_JULIAN_PRO, PREC_100KY, PREC_100MY, PREC_100Y, PREC_10KY, PREC_10MY, PREC_1GY, PREC_1KY, PREC_1MY, PREC_DAY, PREC_DECADE, PREC_HOUR, PREC_MINUTE, PREC_MONTH, PREC_SECOND, PREC_YEAR -
Constructor Summary
ConstructorsConstructorDescriptionTimeValueImpl(long year, byte month, byte day, byte hour, byte minute, byte second, byte precision, int beforeTolerance, int afterTolerance, int timezoneOffset, String calendarModel) Constructor. -
Method Summary
Modifier and TypeMethodDescription<T> Taccept(ValueVisitor<T> valueVisitor) Accept a ValueVisitor and return its output.booleanintGet a tolerance value that specifies how much later in time the value could at most be, measured as a multiple ofprecision.intGet a tolerance value that specifies how much earlier in time the value could at most be, measured as a multiple ofprecision.bytegetDay()Get the day stored for this date.bytegetHour()Get the hour stored for this date.byteGet the minute stored for this date.bytegetMonth()Get the month stored for this date.byteGet the precision hint of this date.Get the IRI of the preferred calendar model that should be used to display this date (and that was presumably used when entering it).Get theItemIdValueof the preferred calendar model that should be used to display this date (and that was presumably used when entering it).byteGet the seconds stored for this date.intGet the offset in minutes from UTC that should be applied when displaying this time to users.org.wikidata.wdtk.datamodel.implementation.TimeValueImpl.JacksonInnerTimegetValue()Returns the inner value helper object.longgetYear()Get the year stored for this date.inthashCode()Convert the value to the Gregorian calendar, if possible.toString()
-
Constructor Details
-
TimeValueImpl
public TimeValueImpl(long year, byte month, byte day, byte hour, byte minute, byte second, byte precision, int beforeTolerance, int afterTolerance, int timezoneOffset, String calendarModel) Constructor.- Parameters:
year- a year number, where 0 refers to 1BCEmonth- a month number between 1 and 12day- a day number between 1 and 31hour- an hour number between 0 and 23minute- a minute number between 0 and 59second- a second number between 0 and 60 (possible leap second)precision- a value in the range ofTimeValue.PREC_DAY, ...,TimeValue.PREC_1GYbeforeTolerance- non-negative integer tolerance before the value; seeTimeValue.getBeforeTolerance()afterTolerance- non-zero, positive integer tolerance before the value; seeTimeValue.getAfterTolerance()calendarModel- the IRI of the calendar model preferred when displaying the date; usuallyTimeValue.CM_GREGORIAN_PROorTimeValue.CM_JULIAN_PROtimezoneOffset- offset in minutes that should be applied when displaying this time
-
-
Method Details
-
getValue
public org.wikidata.wdtk.datamodel.implementation.TimeValueImpl.JacksonInnerTime getValue()Returns the inner value helper object. Only for use by Jackson during serialization.- Returns:
- the inner time value
-
getYear
public long getYear()Description copied from interface:TimeValueGet the year stored for this date. Years in Wikibase can be 0; see "Y0K" issue in the interface documentation. -
getMonth
public byte getMonth()Description copied from interface:TimeValueGet the month stored for this date. It will be a number from 1 to 12. -
getDay
public byte getDay()Description copied from interface:TimeValueGet the day stored for this date. It will be a number from 1 to 31. -
getHour
public byte getHour()Description copied from interface:TimeValueGet the hour stored for this date. It will be a number from 0 to 23. -
getMinute
public byte getMinute()Description copied from interface:TimeValueGet the minute stored for this date. It will be a number from 0 to 59. -
getSecond
public byte getSecond()Description copied from interface:TimeValueGet the seconds stored for this date. The value will be between 0 and 60 (inclusive) to account for leap seconds. Implementations are not expected to validate leap seconds but they should provide consistent ordering: the time 23:59:60 is always before 00:00:00 on the next day. -
getPreferredCalendarModel
Description copied from interface:TimeValueGet the IRI of the preferred calendar model that should be used to display this date (and that was presumably used when entering it). This is usuallyTimeValue.CM_GREGORIAN_PROorTimeValue.CM_JULIAN_PRO.- Specified by:
getPreferredCalendarModelin interfaceTimeValue- Returns:
- IRI of the preferred calendar model
-
getPreferredCalendarModelItemId
Description copied from interface:TimeValueGet theItemIdValueof the preferred calendar model that should be used to display this date (and that was presumably used when entering it).- Specified by:
getPreferredCalendarModelItemIdin interfaceTimeValue
-
getPrecision
public byte getPrecision()Description copied from interface:TimeValueGet the precision hint of this date. The return value will be in the range ofTimeValue.PREC_DAY, ...,TimeValue.PREC_1GY.- Specified by:
getPrecisionin interfaceTimeValue- Returns:
- precision hint for this date
-
getTimezoneOffset
public int getTimezoneOffset()Description copied from interface:TimeValueGet the offset in minutes from UTC that should be applied when displaying this time to users. The recorded time point is always in UTC, so the timezone can be ignored for comparing values. The offset should be added to the given time to obtain the intended local value. For example, an offset of +60 and a time of 10:45:00 should be displayed as 11:45:00 to the user (ideally with some indication of the shift; time zone abbreviations like "CET" could be used when matching the given offset, but the offset might also have values that do not correspond to any current or modern time zone). Therefore positive offsets are used for timezones that to the east of the prime meridian.- Specified by:
getTimezoneOffsetin interfaceTimeValue- Returns:
- minute number (positive or negative)
-
getBeforeTolerance
public int getBeforeTolerance()Description copied from interface:TimeValueGet a tolerance value that specifies how much earlier in time the value could at most be, measured as a multiple ofprecision. The value is a non-negative integer.For example, for the date 2007-05-12T10:45:00 with precision
TimeValue.PREC_MONTH, a before-tolerance value of 3 means that the earliest possible time of this event could have been 2007-02-12T10:45:00. This information about the uncertainty of time points can be taken into account in query answering, but simplified implementations can also ignore it and work with the given (exact) time point instead. If not set specifically by the user, the before-tolerance value should be 0, i.e., the given time point marks the earliest possible time.This boundary is inclusive. For example, a date 2014-02-17T00:00:00 with precision
TimeValue.PREC_DAYand before-tolerance value 1 specifies a time that between 2014-02-17T00:00:00- Specified by:
getBeforeTolerancein interfaceTimeValue- Returns:
- a non-negative integer tolerance measured in terms of precision
- See Also:
-
getAfterTolerance
public int getAfterTolerance()Description copied from interface:TimeValueGet a tolerance value that specifies how much later in time the value could at most be, measured as a multiple ofprecision. The value is a positive integer.For example, for the date 2007-05-12T10:45:00 with precision
TimeValue.PREC_MONTH, an after-tolerance value of 2 means that the latest possible time of this event could have been strictly before 2007-07-12T10:45:00. This information about the uncertainty of time points can be taken into account in query answering, but simplified implementations can also ignore it and work with the given (exact) time point instead. If not set specifically by the user, the after-tolerance value should be 1, i.e., the interval of uncertainty is exactly the length given by precision. However, because most (if not all) other known implementations of the data model got this detail wrong and use 0 instead, we are also using 0 as a default value. This issue is tracked at https://phabricator.wikimedia.org/T194869.The boundary is exclusive. For example, a date 2013-02-01T00:00:00 with precision
TimeValue.PREC_MONTHand after-tolerance value 1 and before-tolerance value of 0 specifies a time "sometime in February 2013", but it excludes any time in March 2013. The after-tolerance must not be 0 (which would make no sense if the bound is exclusive, and which is not needed since precision up to a single second can be specified anyway).- Specified by:
getAfterTolerancein interfaceTimeValue- Returns:
- a non-zero, positive integer tolerance measured in terms of precision
- See Also:
-
accept
Description copied from interface:ValueAccept a ValueVisitor and return its output. -
hashCode
public int hashCode() -
equals
-
toString
-
toGregorian
Description copied from interface:TimeValueConvert the value to the Gregorian calendar, if possible. This conversion can fail if not enough information is available (for example, we need at least day precision to convert from Julian to Gregorian).- Specified by:
toGregorianin interfaceTimeValue- Returns:
- a TimeValue that uses the Gregorian calendar, or null if the conversion failed.
-