# 9.2	Converting dates to chart time

The dates used on the chart depend on the user-configurable time zone. For example, the default setting is GMT+2 with daylight savings on the USA schedule (so that fx markets always open at midnight on Monday).

&#x20;

The chart's time zone is provided via the context data which is available via the data parameter for all functions. For example:

```
// Get base offset in minutes, and daylight savings mode
var offsetMinutes = data.context.timezone.offset;
var dstMode = data.context.timezone.dstMode; 
```

The dstMode is one of the values from the UDI.DST enumeration: 0 = no daylight savings, 1 = USA schedule, 2 = European schedule, 3 = Australian schedule

&#x20;

You can convert from the user's chart time to UTC using UDI.convertChartDateToUTC(). This returns an adjusted date as a number of milliseconds, which you can then convert to a Date() object if necessary. For example:

```
// Convert a value from data.barData.date[] to UTC
var currentBarDate = data.barData.date[0];
var currentAsUTC = UDI.convertChartDateToUTC(currentBarDate);
// Convert to Javascript date object, and output
var dateobj = new Date(currentAsUTC);
console.log("As UTC, bar date is " + dateobj.toISOString());
```

You can convert in the opposite direction, from UTC to chart time, using UDI.convertUTCToChartDate(). For example:

```
// Get current date from computer clock (as UTC milliseconds)
var currentDateFromComputerClock = (new Date()).valueOf();
// Convert to chart time 
var currentAsChartTime = UDI.convertUTCToChartDate(currentDateFromComputerClock);
```

You can also convert UTC to and from other time zones. For example, you can convert UTC to US east coast time, or vice versa.

&#x20;

To do this conversion, you provide a timezone structure, like the one which is included in the UDI's context data. This consists of an offset, in minutes, and a dstMode. For example, the definition of New York time is:

```
// Base of UTC-5, moving to UTC-4 on the USA daylight savings schedule 
{
	offset: -300,
	dstMode: UDI.DST.USA	// = 1
}
```

You can then convert from UTC to a different zone using UDI.convertUTCToZone(). For example, converting a date from UTC to US east coast. What this will do is to return the UTC number of milliseconds minus either 300 minutes or 240 minutes depending on whether the USA was in daylight savings at the date you supply:

```
var usec = UDI.convertUTCToZone(someDate, {offset: -300, dstMode: 1});
```

Similarly, you can convert from another zone to UTC using UDI.convertZoneToUTC(). This adds either 300 minutes or 240 minutes to the number of milliseconds you supply. For example:

```
// Convert the example above back to UTC
var utc = UDI.convertZoneToUTC(usec, {offset: -300, dstMode: 1});
```


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://sway-technologies.gitbook.io/sway-charts-pro-scripts-documentation/sway-charts-pro-user-defined-indicators/other-indicator-topics/9.2-converting-dates-to-chart-time.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
