Time and Dates
RFC3339¶
In the vast majority of APIs, Senseye uses the RFC3339 standard to represent dates and times.
An example of date and time conforming to RFC3339 is: 2022-12-05T13:22:38.000-08:00
For completeness, the RFC3339 specification is here
Formally, the syntax is
date-fullyear = 4DIGIT
date-month = 2DIGIT ; 01-12
date-mday = 2DIGIT ; 01-28, 01-29, 01-30, 01-31 based on
; month/year
time-hour = 2DIGIT ; 00-23
time-minute = 2DIGIT ; 00-59
time-second = 2DIGIT ; 00-58, 00-59, 00-60 based on leap second
; rules
time-secfrac = "." 1*DIGIT
time-numoffset = ("+" / "-") time-hour ":" time-minute
time-offset = "Z" / time-numoffset
partial-time = time-hour ":" time-minute ":" time-second
[time-secfrac]
full-date = date-fullyear "-" date-month "-" date-mday
full-time = partial-time time-offset
date-time = full-date "T" full-time
There are two aspects to draw attention to:
- the Date format is
yyyy-mm-dd
i.e. the year, the month and then the day - there is a time offset at the end. In the above example,
-08:00
is used which represents UTC-8 (Pacific Standard Time). For UTC,+00:00
can be used orZ
which stands for the Zero or Zulu timezone (UTC+0).
Senseye stores data in UTC+0 time.
Unix Time¶
A commonly used lightweight protocol to convey data about a sensor is SenML
, which is described here. This standard allows time to be represented as the number of seconds after January 1st, 1970 at UTC.
Unix Time is not used in Senseye's GraphQL API, but is used within the JSON time series data API.