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:
PatternSection titled “Pattern” | DescriptionSection titled “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
Section titled “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.