Knowledge Base

Formatting dates

Our JavaScript Charts as well as JavaScript Stock Charts allows you to set custom formats of the dates it displays. I.e. on date-based category axis and some other places of the charts.

You can set date formats for each displayed period (hour, day, month, etc.) using a number of options: either directly on CategoryAxis object or through CategoryAxesSettings (Stock Chart only)

By default dateFormats are these:

[{period:'fff',format:'JJ:NN:SS'},
{period:'ss',format:'JJ:NN:SS'},
{period:'mm',format:'JJ:NN'},
{period:'hh',format:'JJ:NN'},
{period:'DD',format:'MMM DD'},
{period:'WW',format:'MMM DD'},
{period:'MM',format:'MMM'},
{period:'YYYY',format:'YYYY'}]

For example, when the chart wants to display a date for a specific day, it looks up “DD” period and takes it’s formatting setting, “MMM DD” in this case. “MMM” means a three letter month abreviation, “DD” – day number. I.e. “Jan 12”.

So in order to change date formatting you just need to update the above array with whatever settings you need.

Below is a list of codes available to be used in date formats:

Pattern
Description
Y Year. The number of Y letters represents digits in the resulting number. I.e.:

YY = 05 (always two digits) *

YYYY = 2005

M Month of the year. The output depends on the number of M’s:

M = 8 (one or two digits) *

MM = 08 (always two digits)

MMM = Aug (3-letter month abbreviation) *

MMMM = August (full month name) *

W Week of the year *
D Day of the month:

D = 7 (one or two digits) *

DD = 07 (always two digits)

E Day of week:

E = 2 (single digit day of week) *

EE = 02 (two-digit day of week) *

EEE = Tue (3-letter abbreviation of the literal representation of the day of week) *

EEEE = Tuesday (full day of week name) *

A Produces either “am” or “pm”. *
J Hour: 0-23

J = 3 (one or two digits) *

JJ = 03 (always two digits)

H Hour: 1-24

H = 3 (one or two digits) *

HH = 03 (always two digits)

K Hour in am/pm: 0-11 *
L Hour in am/pm: 1-12 *
N Minute in hour:

N = 8 (one or two digits) *

NN = 08 (always two digits)

S Second in minute:

S = 5 (one or two digits) *

SS = 05 (always two digits)

Q Milliseconds:

QQ = 51

QQQ = 051

 Other characters Other characters will be displayed as they are without changing them. I.e.:

YYYY-MM-DD = 2013-03-01

 

* the formatting codes marked with an asterisk are not supported in dataDateFormat setting. The chart will not be able to parse those from your string-based dates in data.

 

There are some other properties of the charts which can use the same date formatting technique. These are:

  • categoryBalloonDateFormat of ChartCursor.
  • categoryBalloonDateFormats of ChartCursorSettings.
  • balloonDateFormat of AmSerialChart.
  • dateFormat of PeriodSelector. Note- you can’t use non-numeric formats (MMM, MMMM) for this property.
  • dataDateFormat of AmSerialChart – this one should be set in case your dates in dataProvider are strings, not Date Objects.
    • * supports only zero leading numbers; year needs to contain all four digits

Using amCharts methods to format or parse dates

In case you are using amCharts, and need to format date object to a nice date string, you can use our method for that, for example:

AmCharts.formatDate(new Date(2014,1,3), "DD MMM, YYYY");

will return 03 Feb, 2014 string. (February, as months in JavaScript are zero-based).

If you have a date string and want to  get date object from it, you call:

AmCharts.stringToDate("01-10-2014", "DD-MM-YYYY")

We hope these methods will help you to save some time.