OSID Logo
OSID Specifications
calendaring package
Version 3.1.0
Interfaceosid.calendaring.DateTime
Implementsosid.OsidPrimitive
Used Byosid.Metadata
osid.OsidCompendium
osid.OsidProfile
osid.OsidRequest
osid.Temporal
osid.assessment.AssessmentOffered
osid.assessment.AssessmentTaken
osid.billing.Period
osid.billing.payment.Payer
osid.billing.payment.Payment
show 50 more…
osid.billing.payment.Summary
osid.blogging.Entry
osid.calendaring.DateTimeInterval
osid.calendaring.DateTimeList
osid.calendaring.MeetingTime
osid.calendaring.OffsetEvent
osid.calendaring.Schedule
osid.calendaring.SupersedingEvent
osid.calendaring.TimePeriod
osid.checklist.Todo
osid.configuration.Value
osid.course.Term
osid.course.chronicle.AssessmentEntry
osid.course.chronicle.AwardEntry
osid.course.chronicle.CourseEntry
osid.course.chronicle.CredentialEntry
osid.course.chronicle.ProgramEntry
osid.filing.DirectoryEntry
osid.financials.FiscalPeriod
osid.financials.posting.Post
osid.forum.Post
osid.forum.Reply
osid.grading.GradeEntry
osid.installation.Installation
osid.installation.InstallationPackage
osid.inventory.Inventory
osid.inventory.shipment.Shipment
osid.journaling.JournalEntry
osid.locale.CalendarConversionSession
osid.locale.CalendarFormattingSession
osid.locale.CalendarInfo
osid.logging.LogEntry
osid.mapping.route.RouteProgress
osid.messaging.Message
osid.messaging.Receipt
osid.ordering.Order
osid.personnel.Person
osid.provisioning.Provision
osid.provisioning.ProvisionReturn
osid.provisioning.Request
osid.provisioning.RequestTransaction
osid.recognition.Convocation
osid.repository.Asset
osid.resourcing.Work
osid.rules.check.Check
osid.search.terms.DateTimeRangeTerm
osid.search.terms.DateTimeTerm
osid.tracking.Issue
osid.tracking.LogEntry
osid.workflow.event.WorkflowEvent
Description

The DateTime interface defines a date and/or time. This interface provides a very broad range of dates, describes more or less precision, and/or conveys an uncertainty. A number of convenience methods for retrieving time elements are available but only those methods covered by the specified granularity are valid.

DateTime is a combination of a date and a time. The behavior of the date portion implies a subtely different behavior than the rest of the interface. What follows is an interpretation based on the Gregorian calendar most of use today.

  • Time Values: Elements count up to the next level. There are 1000 milliseconds in a second and 60 minutes in an hour. Each fractional second behaves like it's own clock hand.
  • Time Granularity: Elements below (more fine grained) their specified granularity are meaningless. Don't ask for attoseconds at a SECOND granularity.
  • Date Granularity: Elements below their specified granularity are meaningless. Don't ask for years at an AEON granularity.
  • Date Values: Elements DAY AND MONTH count up to the next level and wraparound like time. There are 12 months in a year.
  • Years: Years are proleptic and continue infinitely into the future and back into the past (infinite in this case means the limit of the counter).
  • Big Year Values: The largest countable element on a Gregorian Calendar is YEAR. Less granular elements than YEARS (CENTURIES) are calculated from the YEAR. 2026 is CENTURY 21, MILLENNIUM 3, AEON 1.
  • Limitations: There is an unspecified practial limitation of 9.22 quintillion years which is plenty of range to put the Big Rip on your calendar. At AEON granularity, that number increases to 9.22 sextiliion. We do expect to see a far future release of the OSIDs to address any limitations describing universe-ending milestones beyond that timeframe.

The counting behavior and the semantic meaning of the elements is determined by the Calendar and Time Systems used although it is expected the fractional second behavior remains constant.

A typical example is describing a day where the time isn't known, and the event did not occur at midnight.

getMillennium() == 2
getCentury() == 18
getYear() == 1776
getMonth() == 7
getDay() == 4
getHour() == 0
getGranularity() == DateTimeResolution.DAY
definesUncertainty() == false
                

Another example showing that the time is probably 1pm but could have been as late as 3pm or early as noon.

getMillennium() == 3
getCentury() == 21
getYear() == 2008
getMonth() == 3
getDay() == 17
getHour() == 13
getMinute() == 0
getGranularity() == TimeResolution.MINUTE
definesUncertainty() == true
getUncertaintyGranularity() == DateTimeResolution.HOUR
getUncertaintyMinus() == 1
getUncertaintyPlus == 2
                

An example marking the birth of the universe. 13.73 billion years +/- 120 million years. The granularity suggests that no more resolution than one million years can be inferred from the "clock", making errors in the exact number of millennia insignificant.

getEpoch() == -13,730
getGranularity() == TimeResolution.EPOCH
definesUncertainty() == true
getUncertaintyGranularity() == DateTimeResolution.EPOCH
getUncertaintyMinus() == 120
getUncertaintyPlus == 120
                

The way to think about granularity versus uncertainty is that granularity is the space between the clock ticks. A clock which displays minutes cannot tell you the second something occurred. Uncertainty is based on the measurement. My digital camera reports times in 100ms increments. That's as granular as it gets. It does not run a NTP client, so it can be a few minutes off. That's its uncertainty.

Finally, uncertainty may be inclusive. Plus or minus 1 year implies the entire two year range of time inclusive of every fractional second in between. A non-inclusive uncertainty implies only three DateTimes -- now, this time 1 year ago, and this time 1 year from now. "This is a photo of the family at Christmas dinner. It could have been 1982 or 1983."

MethodgetCalendarType
Description

Gets the calendar type.

Returnosid.type.Type the calendar type
Compliancemandatory This method must be implemented.
MethodgetAeon
Description

Gets the aeon. An aeon is 1B years.

Returninteger the aeon
Compliancemandatory This method must be implemented.
MethodgetEpoch
Description

Gets the epoch. An epoch is 1M years.

Returninteger the eposh
Compliancemandatory This method must be implemented.
MethodgetMillennium
Description

Gets the millennium. A millenium is 1,000 years.

Returninteger the millennium
Compliancemandatory This method must be implemented.
MethodgetCentury
Description

Gets the century.

Returninteger the century
Compliancemandatory This method must be implemented.
MethodgetYear
Description

Gets the year.

Returninteger the year
Compliancemandatory This method must be implemented.
MethodgetMonth
Description

Gets the month number.

Returncardinal the month
Compliancemandatory This method must be implemented.
MethodgetWeek
Description

Gets the week.

Returncardinal the week
Compliancemandatory This method must be implemented.
MethodgetDay
Description

Gets the day.

Returncardinal the day of the month
Compliancemandatory This method must be implemented.
MethodgetTimeType
Description

Gets the time type.

Returnosid.type.Type the time type
Compliancemandatory This method must be implemented.
MethodgetHour
Description

Gets the hour of the day.

Returncardinal the hour of the day
Compliancemandatory This method must be implemented.
MethodgetMinute
Description

Gets the minute of the hour.

Returncardinal the minute of the hour
Compliancemandatory This method must be implemented.
MethodgetSecond
Description

Gets the second of the minute.

Returncardinal the second of the minute
Compliancemandatory This method must be implemented.
MethodgetMilliseconds
Description

Gets the number of milliseconds in this second 0-999. A millisecond is one thousandth (1e-3) of a second.

Returncardinal the milliseconds of the second
Compliancemandatory This method must be implemented.
MethodgetMicroseconds
Description

Gets the number of microseconds of the second 0-999. A microsecond is one millionth (1e-6) of a second.

Returncardinal the micrseconds of the millisecond
Compliancemandatory This method must be implemented.
MethodgetNanoseconds
Description

Gets the number of nanoseconds of the microsecond 0-999. A nanosecond is one billionth (1e-9) of a second.

Returncardinal the nanoseconds of the microsecond
Compliancemandatory This method must be implemented.
MethodgetPicoseconds
Description

Gets the number of picoseconds of the nanosecond 0-999. A picosecond is one trillionth (1e-12) of a second.

Returncardinal the picoseconds of the nanosecond
Compliancemandatory This method must be implemented.
MethodgetFemtoseconds
Description

Gets the number of femtoseconds of the picosecond 0-999. A femtosecond is one quadrillionth (1e-15) of a second.

Returncardinal the femtoseconds of the picosecond
Compliancemandatory This method must be implemented.
MethodgetAttoseconds
Description

Gets the number of attoseconds of the femtoseconds 0-999. An attosecond is one quintillionth (1e-18) of a second.

Returncardinal the attoseconds of the femtosecond
Compliancemandatory This method must be implemented.
MethodgetZeptoseconds
Description

Gets the number of zeptoseconds of the attosecond 0-999. A zeptosecond is one sextillionth (1e-21) of a second.

Returncardinal the zeptoseconds of the attosecond
Compliancemandatory This method must be implemented.
MethodgetYoctoseconds
Description

Gets the number of yoctoseconds of the picosecond 0-999. A yoctosecond is one septillionth (1e-24) of a second. This is getting quite small.

Returncardinal the yoctoseconds of the picosecond
Compliancemandatory This method must be implemented.
MethodgetRontoseconds
Description

Gets the number of rontoseconds of the yoctosecond 0-999. A rontosecond is one octillionth (1e-27) of a second.

Returncardinal the rontoseconds of the yoctosecond
Compliancemandatory This method must be implemented.
MethodgetQuectoseconds
Description

Gets the number of quectoseconds of the rontosecond 0-999. A quectosecond is one nonillionth (1e-30) of a second.

Returncardinal the quectoseconds of the rontoseconds
Compliancemandatory This method must be implemented.
MethodgetMilliquectoseconds
Description

Gets the number of milliquectoseconds of the quectosecond 0-999. A milliquectosecond is one decillionth (1e-33) of a second.

Returncardinal the milliquectoseconds of the quectosecond
Compliancemandatory This method must be implemented.
MethodgetMicroquectoseconds
Description

Gets the number of microquectoseconds of the milliquectosecond 0-999. A microquectosecond is one undecillionth (1e-36) of a second.

Returncardinal the microquectoseconds of the milliquectosecond
Compliancemandatory This method must be implemented.
MethodgetPlanckseconds
Description

Gets the number of planckseconds of the microquectosecond. A plancksecond is 53.91247 quattuordecillionths (5.391247e-44) of a second.

Returncardinal the plancks of the microquectosecond
Compliancemandatory This method must be implemented.
MethodgetGranularity
Description

Gets the granularity of this time. The granularity indicates the resolution of the clock (the tick). More precision than what is specified in this method cannot be inferred from the available data.

Returnosid.calendaring.DateTimeResolution granularity
Compliancemandatory This method must be implemented.
MethodgetGranularityMultiplier
Description

If the granularity of the time equals getGranularity(), then the multiplier is 1. This method may return a different number when the granularity differs from one of the defined resolutions.

Returncardinal granularity multiplier
Compliancemandatory This method must be implemented.
MethoddefinesUncertainty
Description

Tests if uncertainty is defined for this time.

Returnboolean true if uncertainty is defined, false otherwise
Compliancemandatory This method must be implemented.
MethodgetUncertaintyUnits
Description

Gets the units of the uncertainty.

Returnosid.calendaring.DateTimeResolution units of the uncertainty
ErrorsILLEGAL_STATE definesUncertainty() is false
Compliancemandatory This method must be implemented.
MethodgetUncertaintyMinus
Description

Gets the uncertainty of this datetime in the negative direction.

Returncardinal the uncertainty under this value
ErrorsILLEGAL_STATE definesUncertainty() is false
Compliancemandatory This method must be implemented.
MethodgetUncertaintyPlus
Description

Gets the uncertainty of this datetime in the positive direction.

Returncardinal the uncertainty over this value
ErrorsILLEGAL_STATE definesUncertainty() is false
Compliancemandatory This method must be implemented.
MethodisUncertaintyDateInclusive
Description

Tests if the uncertainty is inclusive of all dates. An inclusive uncertainty includes the entire range specified by the uncertainty units e.g. +/- 1 year includes all of the months and days within that interval. A non-inclusive uncertainty would mean the year is uncertain but the month and day is certain.

Returnboolean true if the uncertainty includes all dates, false otherwise
ErrorsILLEGAL_STATE definesUncertainty() is false
Compliancemandatory This method must be implemented.