Time Zone Support
Time Chart supports specifying a custom time zone for both each data source and the time axis. The recommended approach is that the data is always returned in UTC but the time axis uses a time zone that the user has selected manually.
Note that proper support of time zones with daylight saving time was implemented in version 1.12.0.
Supported time zones
Time Chart uses moment-timezone library to support different time zones and their daylight saving rules.
A list of valid time zone identifiers can be found on Wikipedia.
The chart also supports a special time zone identifier
local which, if specified, will translate to the time zone used by the end-users browser. Note however that this is only supported for the time axis configuration and will result in a warning in the console because due to browser limitations it is not always possible to correctly determine the time zone. See moment documentation for details.
The time zone for the data is specified in the data response (data file) and not in the settings. The default time zone of the chart data sources is UTC.
This time zone is used to parse time values that do not specify explicit time offset. For example
2015-01-01 12:00:00 would be assumed to be the time in the time zone of the data while for
2015-01-01 12:00:00+02:00 the offset included offset
+02:00 would be used instead.
Note that numeric timestamps are always assumed to be UTC. For example, if you specify value
1420149600000 it is parsed as
2015-01-01 22:00:00+00:00. However in this case if the data time zone is
Europe/Riga, the time will be converted to that time zone, resulting in
2015-01-02T00:00:00+02:00 which is the same value just with a different offset.
This adjustment of all values to the data time zone is mostly only when the data unit is day, week, month or year. For these units the data will be always displayed using the data time zone independent of what time axis time zone is configured.
Display - time axis
Time axis time zone is specified in the chart configuration and controls how the data is adjusted when viewing data in units less than a day (hour, minute, second, millisecond).
The default time zone used to display values is UTC. Please read the Supported time zones section on the limitations of using
local as the time zone.
For example, consider that the data contains a timestamp
2015-01-01 12:00:00+05:00. The data time zone is
Europe/Riga but the time axis time zone is
America/New_York. First the time is parsed and adjusted to
Europe/Riga, resulting in
2015-01-01 09:00:00+02:00. After that the value is adjusted to
2015-01-01 02:00:00-05:00. This is the value the chart will use when displaying the data - 2AM on January 1st, 2015.
Converting time from one timezone to another is relatively expensive operation. Although it is done only once when the data is received, it can decrease user experience on slower devices. For example, during the initial tests on an average laptop, converting 100000 timestamps took 2 seconds on Chrome and 10 seconds on IE11. If string timestamps were used, the times were 6 and 18 seconds respectively.
For maximum performance, you should use UTC for both data and time axis and use only numeric timestamps.
Another aspect to consider is the size of the
moment-timezone library that is included by default as it includes every time zone with all historical rules.
If you are not using
local to specify the time zone or the data range is limited to certain years you could remove the data you do not need from the file to reduce the file size. See data builder for details.
The custom file should be included together with
moment.js before initializing TimeChart - the chart will then automatically pick up the custom file instead of using the file it is bundled with.